mcs-queue -> ms-queue
[model-checker-benchmarks.git] / ms-queue / my_queue.h
diff --git a/ms-queue/my_queue.h b/ms-queue/my_queue.h
new file mode 100644 (file)
index 0000000..3e3f435
--- /dev/null
@@ -0,0 +1,43 @@
+#include <stdatomic.h>
+
+#define TRUE                           1
+#define FALSE                          0
+
+#define MAX_NODES                      0xff
+#define MAX_SERIAL                     10000
+
+#define MAKE_LONG(lo, hi)              ((hi)<<16)+(lo)
+
+typedef union pointer {
+       struct {
+               volatile unsigned short count;
+               volatile unsigned short ptr;
+       } sep;
+       atomic_ulong con;
+} pointer_t;
+
+typedef struct node {
+       unsigned value;
+       pointer_t next;
+       unsigned foo[30];
+} node_t;
+
+typedef struct private {
+       unsigned node;
+       unsigned value;
+       unsigned serial[MAX_SERIAL];
+} private_t;
+
+typedef struct shared_mem {
+       pointer_t head;
+       unsigned foo1[31];
+       pointer_t tail;
+       unsigned foo2[31];
+       node_t nodes[MAX_NODES+1];
+       unsigned serial;
+} shared_mem_t;
+
+void init_private();
+void init_memory();
+void init_queue();
+unsigned dequeue();