summaryrefslogtreecommitdiffstats
path: root/lock_free_queue.h
diff options
context:
space:
mode:
Diffstat (limited to 'lock_free_queue.h')
-rw-r--r--lock_free_queue.h44
1 files changed, 30 insertions, 14 deletions
diff --git a/lock_free_queue.h b/lock_free_queue.h
index 14a2cae..0bce83e 100644
--- a/lock_free_queue.h
+++ b/lock_free_queue.h
@@ -1,31 +1,47 @@
/*
* File : lock_free_queue.h
* Author : Jérémy Zurcher <jeremy@asynk.ch>
- * Date : 01/11/09
+ * Date : 2009/11/01
* License : stolen from http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf
*/
+#ifndef _LOCK_FREE_QUEUE_H_
+#define _LOCK_FREE_QUEUE_H_
+
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+
struct node;
-typedef union pointer {
- struct {
+typedef union pointer
+{
+ struct
+ {
volatile struct node *ptr;
volatile unsigned int count;
- } split;
- volatile unsigned long long concat;
+ } split;
+ volatile unsigned long long concat;
} pointer_t;
-typedef struct node {
- void *data;
- pointer_t next;
+typedef struct node
+{
+ void *data;
+ pointer_t next;
} node_t;
-typedef struct queue {
- pointer_t head;
- pointer_t tail;
+typedef struct queue
+{
+ pointer_t head;
+ pointer_t tail;
} lfq_t;
-void init( lfq_t *q );
-void enqueue( lfq_t *q, void *data );
-void* dequeue( lfq_t *q );
+void init(lfq_t *q);
+void enqueue(lfq_t *q, void *data);
+void* dequeue(lfq_t *q);
+
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+# endif /* _LOCK_FREE_QUEUE_H_ */