projects
/
model-checker-benchmarks.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
b61f8c739ed4bea6ea1e1a08189d879a1d57c838
[model-checker-benchmarks.git]
/
chase-lev-deque-bugfix
/
deque.h
1
#ifndef DEQUE_H
2
#define DEQUE_H
3
4
#include <stdatomic.h>
5
#include <inttypes.h>
6
7
typedef struct {
8
atomic_size_t size;
9
atomic_int buffer[];
10
} Array;
11
12
typedef struct {
13
atomic_size_t top, bottom;
14
atomic_uintptr_t array; /* Atomic(Array *) */
15
} Deque;
16
17
Deque * create_size(int size);
18
Deque * create();
19
int take(Deque *q);
20
void resize(Deque *q);
21
void push(Deque *q, int x);
22
int steal(Deque *q);
23
24
#define EMPTY 0xffffffff
25
#define ABORT 0xfffffffe
26
27
/** @Define:
28
#ifdef __cplusplus
29
extern "C" {
30
#endif
31
32
bool succ(int res);
33
bool fail(int res);
34
35
#ifdef __cplusplus
36
};
37
#endif
38
*/
39
40
#endif