diff VSs.h @ 21:feea343d202f

add support for more OmpSs features
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Mon, 29 Oct 2012 16:57:56 +0100
parents a7ca8f45c1c4
children b787a5234406
line diff
     1.1 --- a/VSs.h	Tue Sep 25 16:12:40 2012 +0200
     1.2 +++ b/VSs.h	Mon Oct 29 16:57:56 2012 +0100
     1.3 @@ -92,6 +92,7 @@
     1.4     bool32       isEnded;
     1.5     #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
     1.6     Unit parentUnit;
     1.7 +   Unit firstOfTask;
     1.8     #endif
     1.9   }
    1.10  VSsTaskStub;
    1.11 @@ -102,6 +103,7 @@
    1.12     VSsTaskStub *taskStub;
    1.13     int32        argNum;
    1.14     int32        isReader;
    1.15 +   bool32       isSuspended;
    1.16   }
    1.17  VSsTaskStubCarrier;
    1.18  
    1.19 @@ -131,6 +133,16 @@
    1.20   }
    1.21  VSsSingleton;
    1.22  
    1.23 +typedef struct
    1.24 + {
    1.25 +   int32           isOccupied;
    1.26 +   PrivQueueStruc *waitQ;
    1.27 +#ifdef HOLISTIC__TURN_ON_OBSERVE_UCC
    1.28 +   Unit            previous;
    1.29 +#endif
    1.30 + }
    1.31 +VSsCritical;
    1.32 +
    1.33  enum VSsReqType
    1.34   {
    1.35     submit_task = 1,
    1.36 @@ -145,6 +157,9 @@
    1.37     receive_from_to,
    1.38     //===============================
    1.39     taskwait,
    1.40 +   taskwait_on,
    1.41 +   critical_start,
    1.42 +   critical_end,
    1.43     malloc_req,
    1.44     free_req,
    1.45     singleton_fn_start,
    1.46 @@ -186,6 +201,7 @@
    1.47     void              *dataForFn;
    1.48  
    1.49     int32              transID;
    1.50 +   int32              criticalID;
    1.51   }
    1.52  /* VSsSemReq */;
    1.53  
    1.54 @@ -206,6 +222,7 @@
    1.55                         //fix limit on num with dynArray
    1.56     VSsSingleton     fnSingletons[NUM_STRUCS_IN_SEM_ENV];
    1.57     VSsTrans         transactionStrucs[NUM_STRUCS_IN_SEM_ENV];
    1.58 +   VSsCritical      criticalSection[NUM_STRUCS_IN_SEM_ENV];
    1.59  
    1.60     bool32          *coreIsDone;
    1.61     int32            numCoresDone;
    1.62 @@ -319,6 +336,14 @@
    1.63  void
    1.64  VSs__taskwait(SlaveVP *animSlv);
    1.65  
    1.66 +void
    1.67 +VSs__taskwait_on(SlaveVP *animSlv,void* ptr);
    1.68 +
    1.69 +void
    1.70 +VSs__start_critical(SlaveVP *animSlv,int32 name);
    1.71 +
    1.72 +void
    1.73 +VSs__end_critical(SlaveVP *animSlv,int32 name);
    1.74  
    1.75  int32 *
    1.76  VSs__give_self_taskID( SlaveVP *animSlv );