changes towards second parallel collector
[IRC.git] / Robust / src / Runtime / bamboo / pmc_queue.h
1 #ifndef PMC_QUEUE_H
2 #define PMC_QUEUE_H
3 #include <tmc/spin.h>
4
5 #define NUM_PMC_QUEUE_OBJECTS 256
6 struct pmc_queue_segment {
7   volatile void * objects[NUM_PMC_QUEUE_OBJECTS];
8   struct pmc_queue_segment * next;
9 };
10
11 struct pmc_queue {
12   volatile struct pmc_queue_segment *head;
13   volatile struct pmc_queue_segment *tail;
14   volatile int headindex;
15   volatile int tailindex;
16   tmc_spin_mutex_t lock;
17 };
18
19 void * pmc_dequeue(struct pmc_queue *queue);
20 void pmc_enqueue(struct pmc_queue* queue, void *ptr);
21 bool pmc_isEmpty(struct pmc_queue *queue);
22 void pmc_init(struct pmc_queue *queue);
23 #endif