9 #include "mlp_runtime.h"
10 #include "workschedule.h"
14 __thread struct Queue* seseCallStack;
15 __thread pthread_once_t mlpOnceObj = PTHREAD_ONCE_INIT;
16 void mlpInitOncePerThread() {
17 seseCallStack = createQueue();
20 __thread SESEcommon_p seseCaller;
23 void* mlpAllocSESErecord( int size ) {
24 void* newrec = RUNMALLOC( size );
29 void mlpFreeSESErecord( void* seseRecord ) {
30 RUNFREE( seseRecord );
33 AllocSite* mlpCreateAllocSiteArray(int numAllocSites){
35 AllocSite* newAllocSite=(AllocSite*)RUNMALLOC( sizeof( AllocSite ) * numAllocSites );
36 for(i=0; i<numAllocSites; i++){
37 newAllocSite[i].waitingQueue=createQueue();
42 void addWaitingQueueElement(AllocSite* allocSiteArray, int numAllocSites, int allocID, void *seseRec){
45 for(i=0;i<numAllocSites;i++){
46 if(allocSiteArray[i].id==allocID){
47 addNewItemBack(allocSiteArray[i].waitingQueue,seseRec);
48 //printf("add new item %d into waiting queue:%d\n",((SESEcommon*)seseRec)->classID,allocID);