DIRECTORY Camelot, Mach, YggTransaction; YggSTProcsImpl: CEDAR PROGRAM IMPORTS YggTransaction ~ BEGIN STVote: PROC [sPort: Mach.portT, btid: Camelot.btidT, timestamp: Camelot.timestampT, prepare: BOOL, result: POINTER TO Camelot.voteT] ~ { ERROR; }; STCommit: PROC [sPort: Mach.portT, btid: Camelot.btidT] ~ { tid: YggTransaction.TransID; tid.top _ btid; [] _ YggTransaction.Finish[tid, commit]; }; STAbort: PROC [sPort: Mach.portT, btid: Camelot.btidT] ~ { tid: YggTransaction.TransID; tid.top _ btid; [] _ YggTransaction.Finish[tid, abort]; }; STSuspend: PROC [sPort: Mach.portT, tid: Camelot.tidT, status: INT] ~ { YggTransaction.Suspend[tid, status]; }; END. YggSTProcsImpl.mesa Copyright Σ 1988 by Xerox Corporation. All rights reserved. Bob Hagmann November 1, 1988 7:51:16 am PST This module implements the "ST" procedures from Camelot. Camelot will make MIG style RPC's for ST_Vote, ST_Commit, ST_Abort, and ST_Suspend. The messages for these RPC's have already been fielded and the message has been unmarshalled. See the defs in src/lib/camlib/sys/st.defs and the generated st.h for the calling sequences. WARNING: The top level "ST" procedures in this module are made public to the loader via the "-r" switch during compilation. Global (but not exported!) procedures Global name is ST_Vote. Vote on the commit, abort, or read-only result of a transaction. Global name is ST_Commit. Camelot informs the server that the transaction committed Global name is ST_Abort. Camelot informs the server that the transaction aborted Global name is ST_Suspend. Whoa! The transaction is trying to abort. (Whoa is a pun: Yggdrasil is derived from the "the horse of Yggr" after all.) Initialization ΚΖ˜code•Mark outsideHeaderšœ™Kšœ<™