X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Flock-free-queue.c;h=b0076c6d18441ade1e6d345282b60652a5f3c57e;hb=c89d68e05569ac118bbabdc2bce0b84923683cb5;hp=3f539d7ffe847f50e82c44922ccc58e4b60077f9;hpb=16317446d9b58e89362de5eb3e2a098d411aef00;p=mono.git diff --git a/mono/utils/lock-free-queue.c b/mono/utils/lock-free-queue.c index 3f539d7ffe8..b0076c6d184 100644 --- a/mono/utils/lock-free-queue.c +++ b/mono/utils/lock-free-queue.c @@ -53,13 +53,13 @@ #include #include -#include +#include #include -#define INVALID_NEXT ((void*)-1) -#define END_MARKER ((void*)-2) -#define FREE_NEXT ((void*)-3) +#define INVALID_NEXT ((MonoLockFreeQueueNode *volatile)-1) +#define END_MARKER ((MonoLockFreeQueueNode *volatile)-2) +#define FREE_NEXT ((MonoLockFreeQueueNode *volatile)-3) void mono_lock_free_queue_init (MonoLockFreeQueue *q) @@ -113,7 +113,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node) for (;;) { MonoLockFreeQueueNode *next; - tail = get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0); + tail = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0); mono_memory_read_barrier (); /* * We never dereference next so we don't need a @@ -157,7 +157,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node) static void free_dummy (gpointer _dummy) { - MonoLockFreeQueueDummy *dummy = _dummy; + MonoLockFreeQueueDummy *dummy = (MonoLockFreeQueueDummy *) _dummy; mono_lock_free_queue_node_free (&dummy->node); g_assert (dummy->in_use); mono_memory_write_barrier (); @@ -218,7 +218,7 @@ mono_lock_free_queue_dequeue (MonoLockFreeQueue *q) for (;;) { MonoLockFreeQueueNode *tail, *next; - head = get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0); + head = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0); tail = (MonoLockFreeQueueNode*)q->tail; mono_memory_read_barrier (); next = head->next; @@ -286,7 +286,7 @@ mono_lock_free_queue_dequeue (MonoLockFreeQueue *q) g_assert (q->has_dummy); q->has_dummy = 0; mono_memory_write_barrier (); - mono_thread_hazardous_free_or_queue (head, free_dummy); + mono_thread_hazardous_free_or_queue (head, free_dummy, HAZARD_FREE_NO_LOCK, HAZARD_FREE_ASYNC_CTX); if (try_reenqueue_dummy (q)) goto retry; return NULL;