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