genfio: Splitting gen_template in 2 parts
[fio.git] / smalloc.c
index 9f40f65a620afaf6881d01013c34e025192ee773..5dae7e7c9b79928c2ef69aa792ac71277536fea4 100644 (file)
--- a/smalloc.c
+++ b/smalloc.c
@@ -36,14 +36,14 @@ struct pool {
        struct fio_mutex *lock;                 /* protects this pool */
        void *map;                              /* map of blocks */
        unsigned int *bitmap;                   /* blocks free/busy map */
-       unsigned int free_blocks;               /* free blocks */
-       unsigned int nr_blocks;                 /* total blocks */
-       unsigned int next_non_full;
-       unsigned int mmap_size;
+       size_t free_blocks;             /* free blocks */
+       size_t nr_blocks;                       /* total blocks */
+       size_t next_non_full;
+       size_t mmap_size;
 };
 
 struct block_hdr {
-       unsigned int size;
+       size_t size;
 #ifdef SMALLOC_REDZONE
        unsigned int prered;
 #endif
@@ -52,7 +52,7 @@ struct block_hdr {
 static struct pool mp[MAX_POOLS];
 static unsigned int nr_pools;
 static unsigned int last_pool;
-static struct fio_mutex *lock;
+static struct fio_rwlock *lock;
 
 static inline void pool_lock(struct pool *pool)
 {
@@ -66,22 +66,22 @@ static inline void pool_unlock(struct pool *pool)
 
 static inline void global_read_lock(void)
 {
-       fio_mutex_down_read(lock);
+       fio_rwlock_read(lock);
 }
 
 static inline void global_read_unlock(void)
 {
-       fio_mutex_up_read(lock);
+       fio_rwlock_unlock(lock);
 }
 
 static inline void global_write_lock(void)
 {
-       fio_mutex_down_write(lock);
+       fio_rwlock_write(lock);
 }
 
 static inline void global_write_unlock(void)
 {
-       fio_mutex_up_write(lock);
+       fio_rwlock_unlock(lock);
 }
 
 static inline int ptr_valid(struct pool *pool, void *ptr)
@@ -91,13 +91,13 @@ static inline int ptr_valid(struct pool *pool, void *ptr)
        return (ptr >= pool->map) && (ptr < pool->map + pool_size);
 }
 
-static inline unsigned int size_to_blocks(unsigned int size)
+static inline size_t size_to_blocks(size_t size)
 {
        return (size + SMALLOC_BPB - 1) / SMALLOC_BPB;
 }
 
 static int blocks_iter(struct pool *pool, unsigned int pool_idx,
-                      unsigned int idx, unsigned int nr_blocks,
+                      unsigned int idx, size_t nr_blocks,
                       int (*func)(unsigned int *map, unsigned int mask))
 {
 
@@ -152,19 +152,19 @@ static int mask_set(unsigned int *map, unsigned int mask)
 }
 
 static int blocks_free(struct pool *pool, unsigned int pool_idx,
-                      unsigned int idx, unsigned int nr_blocks)
+                      unsigned int idx, size_t nr_blocks)
 {
        return blocks_iter(pool, pool_idx, idx, nr_blocks, mask_cmp);
 }
 
 static void set_blocks(struct pool *pool, unsigned int pool_idx,
-                      unsigned int idx, unsigned int nr_blocks)
+                      unsigned int idx, size_t nr_blocks)
 {
        blocks_iter(pool, pool_idx, idx, nr_blocks, mask_set);
 }
 
 static void clear_blocks(struct pool *pool, unsigned int pool_idx,
-                        unsigned int idx, unsigned int nr_blocks)
+                        unsigned int idx, size_t nr_blocks)
 {
        blocks_iter(pool, pool_idx, idx, nr_blocks, mask_clear);
 }
@@ -223,7 +223,7 @@ void sinit(void)
 {
        int ret;
 
-       lock = fio_mutex_rw_init();
+       lock = fio_rwlock_init();
        ret = add_pool(&mp[0], INITIAL_SIZE);
        assert(!ret);
 }
@@ -248,7 +248,7 @@ void scleanup(void)
                cleanup_pool(&mp[i]);
 
        if (lock)
-               fio_mutex_remove(lock);
+               fio_rwlock_remove(lock);
 }
 
 #ifdef SMALLOC_REDZONE
@@ -348,9 +348,9 @@ void sfree(void *ptr)
        sfree_pool(pool, ptr);
 }
 
-static void *__smalloc_pool(struct pool *pool, unsigned int size)
+static void *__smalloc_pool(struct pool *pool, size_t size)
 {
-       unsigned int nr_blocks;
+       size_t nr_blocks;
        unsigned int i;
        unsigned int offset;
        unsigned int last_idx;
@@ -403,9 +403,9 @@ fail:
        return ret;
 }
 
-static void *smalloc_pool(struct pool *pool, unsigned int size)
+static void *smalloc_pool(struct pool *pool, size_t size)
 {
-       unsigned int alloc_size = size + sizeof(struct block_hdr);
+       size_t alloc_size = size + sizeof(struct block_hdr);
        void *ptr;
 
        /*