7 #define MAX_SERIAL 10000
9 typedef unsigned long long pointer;
10 typedef atomic_ullong pointer_t;
12 #define MAKE_POINTER(ptr, count) ((((pointer)count) << 32) | ptr)
13 #define PTR_MASK 0xffffffffLL
14 #define COUNT_MASK (0xffffffffLL << 32)
16 static inline void set_count(pointer *p, unsigned int val) { *p = (*p & ~COUNT_MASK) | ((pointer)val << 32); }
17 static inline void set_ptr(pointer *p, unsigned int val) { *p = (*p & ~PTR_MASK) | val; }
18 static inline unsigned int get_count(pointer p) { return p & PTR_MASK; }
19 static inline unsigned int get_ptr(pointer p) { return (p & COUNT_MASK) >> 32; }
27 typedef struct private {
30 unsigned int serial[MAX_SERIAL];
33 typedef struct shared_mem {
35 unsigned int foo1[31];
37 unsigned int foo2[31];
38 node_t nodes[MAX_NODES+1];
42 void init_private(int pid);
45 unsigned int dequeue();