diff options
Diffstat (limited to 'pfinet/kmem_cache.c')
-rw-r--r-- | pfinet/kmem_cache.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/pfinet/kmem_cache.c b/pfinet/kmem_cache.c index 8c73c9bf..aab192e1 100644 --- a/pfinet/kmem_cache.c +++ b/pfinet/kmem_cache.c @@ -20,12 +20,12 @@ /* Hack replacement for Linux's kmem_cache_t allocator, using plain malloc and cthreads locking. The locking here is probably unnecessary. */ -#include <cthreads.h> +#include <pthread.h> #include <linux/malloc.h> struct kmem_cache_s { - struct mutex lock; + pthread_mutex_t lock; void *freelist; size_t item_size; @@ -43,7 +43,7 @@ kmem_cache_create (const char *name, size_t item_size, kmem_cache_t *new = malloc (sizeof *new); if (!new) return 0; - mutex_init (&new->lock); + pthread_mutex_init (&new->lock, NULL); new->freelist = 0; new->item_size = item_size; new->ctor = ctor; @@ -58,14 +58,14 @@ kmem_cache_alloc (kmem_cache_t *cache, int flags) { void *p; - __mutex_lock (&cache->lock); + pthread_mutex_lock (&cache->lock); p = cache->freelist; if (p != 0) { cache->freelist = *(void **)(p + cache->item_size); - __mutex_unlock (&cache->lock); + pthread_mutex_unlock (&cache->lock); return p; } - __mutex_unlock (&cache->lock); + pthread_mutex_unlock (&cache->lock); p = malloc (cache->item_size + sizeof (void *)); if (p && cache->ctor) @@ -79,10 +79,10 @@ kmem_cache_free (kmem_cache_t *cache, void *p) { void **const nextp = (void **) (p + cache->item_size); - __mutex_lock (&cache->lock); + pthread_mutex_lock (&cache->lock); *nextp = cache->freelist; cache->freelist = p; - __mutex_unlock (&cache->lock); + pthread_mutex_unlock (&cache->lock); /* XXX eventually destroy some... */ } |