9732b2f744048b373f5cc47425feafe33169c100
[mono.git] / mono / utils / lock-free-alloc.h
1 /*
2  * lock-free-alloc.h: Lock free allocator.
3  *
4  * (C) Copyright 2011 Novell, Inc
5  */
6
7 #ifndef __MONO_LOCKFREEALLOC_H__
8 #define __MONO_LOCKFREEALLOC_H__
9
10 #include <glib.h>
11
12 #include "lock-free-queue.h"
13
14 typedef struct {
15         MonoLockFreeQueue partial;
16         unsigned int slot_size;
17 } MonoLockFreeAllocSizeClass;
18
19 struct _MonoLockFreeAllocDescriptor;
20
21 typedef struct {
22         struct _MonoLockFreeAllocDescriptor *active;
23         MonoLockFreeAllocSizeClass *sc;
24 } MonoLockFreeAllocator;
25
26 void mono_lock_free_allocator_init_size_class (MonoLockFreeAllocSizeClass *sc, unsigned int slot_size) MONO_INTERNAL;
27 void mono_lock_free_allocator_init_allocator (MonoLockFreeAllocator *heap, MonoLockFreeAllocSizeClass *sc) MONO_INTERNAL;
28
29 gpointer mono_lock_free_alloc (MonoLockFreeAllocator *heap) MONO_INTERNAL;
30 void mono_lock_free_free (gpointer ptr) MONO_INTERNAL;
31
32 gboolean mono_lock_free_allocator_check_consistency (MonoLockFreeAllocator *heap) MONO_INTERNAL;
33
34 #endif