Merge branch 'master' of ssh://brick.kernel.dk/data/git/fio
authorJens Axboe <axboe@kernel.dk>
Tue, 6 Nov 2012 09:52:06 +0000 (10:52 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 6 Nov 2012 09:52:06 +0000 (10:52 +0100)
smalloc.c
smalloc.h

index d0b6f1e1f0059fb266aac3334d078f36715fbacd..b0173739b49c18254e5a425d58d09e9369a0792e 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
@@ -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);
 }
@@ -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;
 
        /*
@@ -431,10 +431,13 @@ static void *smalloc_pool(struct pool *pool, unsigned int size)
        return ptr;
 }
 
-void *smalloc(unsigned int size)
+void *smalloc(size_t size)
 {
        unsigned int i;
 
+       if (size != (unsigned int) size)
+               return NULL;
+
        global_write_lock();
        i = last_pool;
 
index 6905c6a8c3c806a7ce20616452bb4b82f1fbfe89..f9a5e410fae79b570973a708c95f713912d8e40c 100644 (file)
--- a/smalloc.h
+++ b/smalloc.h
@@ -1,7 +1,7 @@
 #ifndef FIO_SMALLOC_H
 #define FIO_SMALLOC_H
 
-extern void *smalloc(unsigned int);
+extern void *smalloc(size_t);
 extern void sfree(void *);
 extern char *smalloc_strdup(const char *);
 extern void sinit(void);