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