Merge branch 'master' of ssh://demsky.eecs.uci.edu/home/git/model-checker-benchmarks
[model-checker-benchmarks.git] / chase-lev-deque / deque.h
1 #ifndef DEQUE_H
2 #define DEQUE_H
3
4 typedef struct {
5         atomic_size_t size;
6         atomic_int buffer[];
7 } Array;
8
9 typedef struct {
10         atomic_size_t top, bottom;
11         atomic_uintptr_t array; /* Atomic(Array *) */
12 } Deque;
13
14 Deque * create();
15 int take(Deque *q);
16 int steal(Deque *q);
17 void resize(Deque *q);
18 void push(Deque *q, int x);
19
20 #define EMPTY 0xffffffff
21 #define ABORT 0xfffffffe
22
23 #endif