First set of licensing changes
[mono.git] / mono / utils / lock-free-array-queue.c
index be343caeb3e1b0246260f86a4680cdb47facd351..b0d0a9a1dfe593ab67005f1cb52e960b0d89447b 100644 (file)
@@ -3,6 +3,7 @@
  * require hazard pointers.
  *
  * (C) Copyright 2011 Xamarin Inc.
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
  */
 
 /*
  * entry data, and then sets the state to USED or FREE.
  */
 
+#include <string.h>
+
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-membar.h>
+#ifdef SGEN_WITHOUT_MONO
+#include <mono/sgen/sgen-gc.h>
+#include <mono/sgen/sgen-client.h>
+#else
 #include <mono/utils/mono-mmap.h>
+#endif
 
 #include <mono/utils/lock-free-array-queue.h>
 
@@ -37,7 +45,7 @@ alloc_chunk (MonoLockFreeArray *arr)
 {
        int size = mono_pagesize ();
        int num_entries = (size - (sizeof (Chunk) - arr->entry_size * MONO_ZERO_LEN_ARRAY)) / arr->entry_size;
-       Chunk *chunk = mono_valloc (0, size, MONO_MMAP_READ | MONO_MMAP_WRITE);
+       Chunk *chunk = (Chunk *) mono_valloc (NULL, size, MONO_MMAP_READ | MONO_MMAP_WRITE);
        g_assert (chunk);
        chunk->num_entries = num_entries;
        return chunk;
@@ -137,7 +145,7 @@ mono_lock_free_array_queue_push (MonoLockFreeArrayQueue *q, gpointer entry_data_
 
        do {
                index = InterlockedIncrement (&q->num_used_entries) - 1;
-               entry = mono_lock_free_array_nth (&q->array, index);
+               entry = (Entry *) mono_lock_free_array_nth (&q->array, index);
        } while (InterlockedCompareExchange (&entry->state, STATE_BUSY, STATE_FREE) != STATE_FREE);
 
        mono_memory_write_barrier ();
@@ -172,7 +180,7 @@ mono_lock_free_array_queue_pop (MonoLockFreeArrayQueue *q, gpointer entry_data_p
                                return FALSE;
                } while (InterlockedCompareExchange (&q->num_used_entries, index - 1, index) != index);
 
-               entry = mono_lock_free_array_nth (&q->array, index - 1);
+               entry = (Entry *) mono_lock_free_array_nth (&q->array, index - 1);
        } while (InterlockedCompareExchange (&entry->state, STATE_BUSY, STATE_USED) != STATE_USED);
 
        /* Reading the item must happen before CASing the state. */