mcs-queue: initial checkin
[model-checker-benchmarks.git] / mcs-queue / my_queue.h
1 #define TRUE                            1
2 #define FALSE                           0
3 #define NULL                            0
4
5 #define MAX_NODES                       0xff
6 #define MAX_SERIAL                      10000
7
8 #define MAKE_LONG(lo, hi)               ((hi)<<16)+(lo)
9
10 typedef union pointer {
11   struct {
12     volatile unsigned short count;
13     volatile unsigned short ptr;
14   } sep;
15   volatile unsigned long con;
16 }pointer_t;
17
18 typedef struct node {
19   unsigned value;
20   pointer_t next;
21   unsigned foo[30];
22 } node_t;
23
24 typedef struct private {
25   unsigned node;
26   unsigned value;
27   unsigned serial[MAX_SERIAL];
28 } private_t;
29
30 typedef struct shared_mem {
31   pointer_t head;
32   unsigned foo1[31];
33   pointer_t tail;
34   unsigned foo2[31];
35   node_t nodes[MAX_NODES+1];
36   unsigned serial;
37 } shared_mem_t;
38