1 #ifndef __MLP_RUNTIME__
2 #define __MLP_RUNTIME__
7 #include "psemaphore.h"
19 // these fields are common to any SESE, and casting the
20 // generated SESE record to this can be used, because
21 // the common structure is always the first item in a
22 // customized SESE record
23 typedef struct SESEcommon_t {
25 // the identifier for the class of sese's that
26 // are instances of one particular static code block
29 // a parent waits on this semaphore when stalling on
30 // this child, the child gives it at its SESE exit
33 // the lock guards the following data SESE's
34 // use to coordinate with one another
36 struct Queue* forwardList;
37 int unresolvedDependencies;
44 // a parent remembers an SESE instance, say class ID=2
45 // and age=0, by declaring an SESEvarSrc seseID2_age0
46 // and keeping the fields up-to-date
47 typedef struct SESEvarSrc_t {
54 // simple mechanical allocation and
55 // deallocation of SESE records
56 void* mlpCreateSESErecord( int size );
57 void mlpDestroySESErecord( void* seseRecord );
60 // main library functions
63 void mlpCommonIssueActions( void* seseRecord );
64 void mlpStall( void* seseRecord );
67 #endif /* __MLP_RUNTIME__ */