4 * Created on: Sep 1, 2010
7 #ifndef WAITINGQUEUE_H_
8 #define WAITINGQUEUE_H_
10 #define NUMITEMS_WQ 20
13 typedef struct TraverserData_WQ {
17 } TraverserResumeDataFromWaitingQ;
19 typedef struct BinVector_wq {
20 struct TraverserData_WQ array[NUMITEMS_WQ];
21 struct BinVector_wq * next;
24 } WaitingQueueBinVector;
27 typedef struct BinElement_wq {
28 struct BinVector_wq * head;
29 struct BinVector_wq * tail;
33 void putIntoWaitingQueue(int allocSiteID, WaitingQueueBin * queue, void * resumePtr, int traverserID);
34 int isEmptyForWaitingQ(WaitingQueueBin * queue, int allocSiteID);
35 WaitingQueueBin * mallocWaitingQueue(int size);
36 WaitingQueueBinVector * returnWaitingQueueBinVectorToFreePool(struct BinVector_wq *ptr);
37 int removeFromWaitingQueue(WaitingQueueBin * queue, int allocSiteID, int TraverserID);
38 WaitingQueueBinVector * mallocNewWaitingQueueBinVector();
39 WaitingQueueBinVector * getUsableWaitingQueueBinVector();