summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2010-07-19 18:08:53 +0200
committerMarek Olšák <[email protected]>2010-07-19 21:05:47 +0200
commitfd03dd203f19301520d16de58552cc2fec5e6115 (patch)
treeb0eb1ab23c3b376f1b73d9b78a86dd6a284fc8c3
parent95ca22001a4d72325f963662a635d2b45feaf7b5 (diff)
util: remove the dummy field in mempool
It should allocate less memory now.
-rw-r--r--src/gallium/auxiliary/util/u_mempool.c13
-rw-r--r--src/gallium/auxiliary/util/u_mempool.h5
2 files changed, 4 insertions, 14 deletions
diff --git a/src/gallium/auxiliary/util/u_mempool.c b/src/gallium/auxiliary/util/u_mempool.c
index c4bb2658f29..0ce4b6cf1a7 100644
--- a/src/gallium/auxiliary/util/u_mempool.c
+++ b/src/gallium/auxiliary/util/u_mempool.c
@@ -30,8 +30,6 @@
#define UTIL_MEMPOOL_MAGIC 0xcafe4321
-struct util_mempool_block_body { char dummy; };
-
/* The block is either allocated memory or free space. */
struct util_mempool_block {
/* The header. */
@@ -40,9 +38,6 @@ struct util_mempool_block {
intptr_t magic;
- /* The block begins here. */
- struct util_mempool_block_body body;
-
/* Memory after the last member is dedicated to the block itself.
* The allocated size is always larger than this structure. */
};
@@ -52,7 +47,8 @@ util_mempool_get_block(struct util_mempool *pool,
struct util_mempool_page *page, unsigned index)
{
return (struct util_mempool_block*)
- ((uint8_t*)&page->body + (pool->block_size * index));
+ ((uint8_t*)page + sizeof(struct util_mempool_page) +
+ (pool->block_size * index));
}
static void util_mempool_add_new_page(struct util_mempool *pool)
@@ -92,15 +88,14 @@ static void *util_mempool_malloc_st(struct util_mempool *pool)
assert(block->magic == UTIL_MEMPOOL_MAGIC);
pool->first_free = block->next_free;
- return &block->body;
+ return (uint8_t*)block + sizeof(struct util_mempool_block);
}
static void util_mempool_free_st(struct util_mempool *pool, void *ptr)
{
- struct util_mempool_block dummy;
struct util_mempool_block *block =
(struct util_mempool_block*)
- ((uint8_t*)ptr - ((uint8_t*)&dummy.body - (uint8_t*)&dummy));
+ ((uint8_t*)ptr - sizeof(struct util_mempool_block));
assert(block->magic == UTIL_MEMPOOL_MAGIC);
block->next_free = pool->first_free;
diff --git a/src/gallium/auxiliary/util/u_mempool.h b/src/gallium/auxiliary/util/u_mempool.h
index c96f9b696b5..a5b5d6a9b7c 100644
--- a/src/gallium/auxiliary/util/u_mempool.h
+++ b/src/gallium/auxiliary/util/u_mempool.h
@@ -43,16 +43,11 @@ enum util_mempool_threading {
UTIL_MEMPOOL_MULTITHREADED = TRUE
};
-struct util_mempool_page_body { char dummy; };
-
/* The page is an array of blocks (allocations). */
struct util_mempool_page {
/* The header (linked-list pointers). */
struct util_mempool_page *prev, *next;
- /* The page begins here. */
- struct util_mempool_page_body body;
-
/* Memory after the last member is dedicated to the page itself.
* The allocated size is always larger than this structure. */
};