1 #ifndef __MLP_RUNTIME__
2 #define __MLP_RUNTIME__
7 #include "psemaphore.h"
10 // forward delcarations
16 typedef struct SESEvar_t {
17 // the value when it is known will be placed
18 // in this location, which can be accessed
19 // as a variety of types
25 long long sesetype_long;
28 double sesetype_double;
29 void* sesetype_object;
34 typedef struct SESErecord_t {
35 // the identifier for the class of sese's that
36 // are instances of one particular static code block
39 // The following fields have this structure:
40 // [INTPTR numPtrs][void* next][ptr0][ptr1]...
42 void* outSetObjsNotInInSet;
44 // The following fields point to compile-time
45 // generated structures that have named
48 void* outSetPrimsNotInInSet;
50 // the lock guards the following data SESE's
51 // use to coordinate with one another
53 struct Queue* forwardList;
59 // simple mechanical allocation and deallocation
61 SESErecord* mlpCreateSESErecord( int classID,
63 void* outSetObjsNotInInSet,
65 void* outSetPrimsNotInInSet
68 void mlpDestroySESErecord( SESErecord* sese );
71 // main library functions
73 void mlpIssue( SESErecord* sese );
74 void mlpStall( SESErecord* sese );
77 #endif /* __MLP_RUNTIME__ */