Increase size of bootstrap bytes as some Linux distributions need more space.
[satcheck.git] / test / ms-queue-freelist.h
1 #include <stdatomic.h>
2
3 #define MAX_NODES                       0xf
4
5 typedef unsigned long long pointer;
6 typedef atomic_ullong pointer_t;
7
8 #define MAKE_POINTER(ptr, count)        ((((pointer)count) << 32) | ptr)
9 #define PTR_MASK 0xffffffffLL
10 #define COUNT_MASK (0xffffffffLL << 32)
11
12 static inline unsigned int get_count(pointer p) { return (p & COUNT_MASK) >> 32; }
13 static inline unsigned int get_ptr(pointer p) { return p & PTR_MASK; }
14
15 typedef struct node {
16         unsigned int value;
17         pointer_t next;
18 } node_t;
19
20 typedef struct {
21         pointer_t head;
22         pointer_t tail;
23         node_t nodes[MAX_NODES + 1];
24 } queue_t;
25
26 void init_queue(queue_t *q, int num_threads);
27 void enqueue(queue_t *q, unsigned int val);
28 bool dequeue(queue_t *q, unsigned int *retVal);
29 int get_thread_num();