X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=smalloc.c;h=a2ad25a0a0d03bf5010c743325ed17e594e0fb83;hp=cab7132511b1729b152278f119d300c83f54b5d2;hb=ce4d13ca162df4127ec3b5911553802c53396705;hpb=e6fe02651641fc64d2fa4fcfe9b1013b2947d11b diff --git a/smalloc.c b/smalloc.c index cab71325..a2ad25a0 100644 --- a/smalloc.c +++ b/smalloc.c @@ -3,19 +3,11 @@ * that can be shared across processes and threads */ #include -#include -#include #include #include -#include -#include -#include -#include -#include #include "fio.h" -#include "mutex.h" -#include "arch/arch.h" +#include "fio_sem.h" #include "os/os.h" #include "smalloc.h" #include "log.h" @@ -40,7 +32,7 @@ static const int int_mask = sizeof(int) - 1; #endif struct pool { - struct fio_mutex *lock; /* protects this pool */ + struct fio_sem *lock; /* protects this pool */ void *map; /* map of blocks */ unsigned int *bitmap; /* blocks free/busy map */ size_t free_blocks; /* free blocks */ @@ -192,7 +184,7 @@ static bool add_pool(struct pool *pool, unsigned int alloc_size) pool->bitmap = (unsigned int *)((char *) ptr + (pool->nr_blocks * SMALLOC_BPL)); memset(pool->bitmap, 0, bitmap_blocks * sizeof(unsigned int)); - pool->lock = fio_mutex_init(FIO_MUTEX_UNLOCKED); + pool->lock = fio_sem_init(FIO_SEM_UNLOCKED); if (!pool->lock) goto out_fail; @@ -232,7 +224,7 @@ static void cleanup_pool(struct pool *pool) munmap(pool->map, pool->mmap_size); if (pool->lock) - fio_mutex_remove(pool->lock); + fio_sem_remove(pool->lock); } void scleanup(void) @@ -309,12 +301,12 @@ static void sfree_pool(struct pool *pool, void *ptr) i = offset / SMALLOC_BPL; idx = (offset % SMALLOC_BPL) / SMALLOC_BPB; - fio_mutex_down(pool->lock); + fio_sem_down(pool->lock); clear_blocks(pool, i, idx, size_to_blocks(hdr->size)); if (i < pool->next_non_full) pool->next_non_full = i; pool->free_blocks += size_to_blocks(hdr->size); - fio_mutex_up(pool->lock); + fio_sem_up(pool->lock); } void sfree(void *ptr) @@ -348,7 +340,7 @@ static void *__smalloc_pool(struct pool *pool, size_t size) unsigned int last_idx; void *ret = NULL; - fio_mutex_down(pool->lock); + fio_sem_down(pool->lock); nr_blocks = size_to_blocks(size); if (nr_blocks > pool->free_blocks) @@ -391,7 +383,7 @@ static void *__smalloc_pool(struct pool *pool, size_t size) ret = pool->map + offset; } fail: - fio_mutex_up(pool->lock); + fio_sem_up(pool->lock); return ret; }