From aab1aaa56385ad320745e6d7eab64675a0d64f27 Mon Sep 17 00:00:00 2001 From: Evan Ramos Date: Mon, 4 Jun 2018 16:29:06 -0500 Subject: [PATCH] Apply minor cleanup to mempool Change-Id: I9fb2f54826a2c5909aa9674327ca0c0d37fb2212 --- src/arch/gni/machine.C | 5 +++-- src/arch/util/mempool.c | 23 +++++++---------------- src/arch/util/mempool.h | 20 ++++++++++---------- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/arch/gni/machine.C b/src/arch/gni/machine.C index 0f7459bc04..3e0fd388e4 100644 --- a/src/arch/gni/machine.C +++ b/src/arch/gni/machine.C @@ -4087,12 +4087,13 @@ static void *alloc_persistent_mempool_block(size_t *size, gni_mem_handle_t *mem_ // ptr is a block head pointer void free_mempool_block(void *ptr, gni_mem_handle_t mem_hndl) { + block_header *bh = (block_header *)ptr; if(!(IsMemHndlZero(mem_hndl))) { - MEMORY_DEREGISTER(onesided_hnd, nic_hndl, &mem_hndl, &omdh, GetSizeFromBlockHeader(ptr)); + MEMORY_DEREGISTER(onesided_hnd, nic_hndl, &mem_hndl, &omdh, GetSizeFromBlockHeader(bh)); } #if LARGEPAGE - my_free_huge_pages(ptr, GetSizeFromBlockHeader(ptr)); + my_free_huge_pages(ptr, GetSizeFromBlockHeader(bh)); #else free(ptr); #endif diff --git a/src/arch/util/mempool.c b/src/arch/util/mempool.c index 1f57851b1f..37668c02e2 100644 --- a/src/arch/util/mempool.c +++ b/src/arch/util/mempool.c @@ -50,7 +50,7 @@ INLINE_KEYWORD int which_pow2(size_t size) INLINE_KEYWORD void fillblock(mempool_type *mptr,block_header *block_head,size_t pool_size,int expansion) { int i,power; - size_t loc,left,prev; + size_t loc,left,prev,taken; slot_header *head; void *pool; @@ -59,13 +59,9 @@ INLINE_KEYWORD void fillblock(mempool_type *mptr,block_header *block_head,size_t } pool = block_head; - if(expansion) { - left = pool_size-sizeof(block_header); - loc = (char*)pool+sizeof(block_header)-(char*)mptr; - } else { - left = pool_size-sizeof(mempool_type); - loc = (char*)pool+sizeof(mempool_type)-(char*)mptr; - } + taken = expansion ? sizeof(block_header) : sizeof(mempool_type); + left = pool_size - taken; + loc = (char*)pool + taken - (char*)mptr; power = which_pow2(left); if(left < cutOffPoints[power]) { power--; @@ -166,11 +162,8 @@ int checkblock(mempool_type *mptr,block_header *current,int power) } powiter++; } - if(head_free == NULL) { - return 0; - } else { - return 1; - } + + return head_free != NULL; } void removeblocks(mempool_type *mptr) @@ -207,10 +200,8 @@ void removeblocks(mempool_type *mptr) mempool_type *mempool_init(size_t pool_size, mempool_newblockfn allocfn, mempool_freeblock freefn, size_t limit) { - int i,power; - size_t end,left,prev,next; + int power; mempool_type *mptr; - slot_header *head; mem_handle_t mem_hndl; void *pool = allocfn(&pool_size, &mem_hndl, 0); diff --git a/src/arch/util/mempool.h b/src/arch/util/mempool.h index 0881e25da9..f4b8efb01b 100644 --- a/src/arch/util/mempool.h +++ b/src/arch/util/mempool.h @@ -21,17 +21,17 @@ typedef void (* mempool_freeblock)(void *ptr, mem_handle_t mem_hndl); #define cutOffNum 25 //given x as mptr get -#define MEMPOOL_GetBlockHead(x) (block_header*)&(x->block_head) +#define MEMPOOL_GetBlockHead(x) (&((x)->block_head)) //given x as block header, get ... -#define MEMPOOL_GetBlockSize(x) (((block_header*)x)->size) -#define MEMPOOL_GetBlockMemHndl(x) (((block_header*)x)->mem_hndl) -#define MEMPOOL_GetBlockNext(x) (((block_header*)x)->block_next) +#define MEMPOOL_GetBlockSize(x) ((x)->size) +#define MEMPOOL_GetBlockMemHndl(x) ((x)->mem_hndl) +#define MEMPOOL_GetBlockNext(x) ((x)->block_next) //given x as user pointer, get mempool_header/slot_header #define MEMPOOL_GetMempoolHeader(x,align) \ - ((mempool_header*)((char*)(x)-align)) + ((mempool_header*)((char*)(x)-(align))) //given x as mempool_header/slot_header, get ... -#define MEMPOOL_GetBlockPtr(x) ((block_header*)(x->block_ptr)) -#define MEMPOOL_GetMempoolPtr(x) ((mempool_type*)(MEMPOOL_GetBlockPtr(x)->mptr)) +#define MEMPOOL_GetBlockPtr(x) ((x)->block_ptr) +#define MEMPOOL_GetMempoolPtr(x) (MEMPOOL_GetBlockPtr(x)->mptr) #define MEMPOOL_GetSize(x) (MEMPOOL_GetBlockPtr(x)->size) #define MEMPOOL_GetMemHndl(x) (MEMPOOL_GetBlockPtr(x)->mem_hndl) #define MEMPOOL_GetMsgInRecv(x) (MEMPOOL_GetBlockPtr(x)->msgs_in_recv) @@ -40,9 +40,9 @@ typedef void (* mempool_freeblock)(void *ptr, mem_handle_t mem_hndl); #define MEMPOOL_DecMsgInRecv(x) (MEMPOOL_GetBlockPtr(x)->msgs_in_recv)-- #define MEMPOOL_IncMsgInSend(x) (MEMPOOL_GetBlockPtr(x)->msgs_in_send)++ #define MEMPOOL_DecMsgInSend(x) (MEMPOOL_GetBlockPtr(x)->msgs_in_send)-- -#define MEMPOOL_GetSlotGNext(x) (x->gnext) -#define MEMPOOL_GetSlotStatus(x) (x->status) -#define MEMPOOL_GetSlotSize(x) (cutOffPoints[x->size]) +#define MEMPOOL_GetSlotGNext(x) ((x)->gnext) +#define MEMPOOL_GetSlotStatus(x) ((x)->status) +#define MEMPOOL_GetSlotSize(x) (cutOffPoints[(x)->size]) struct block_header; struct mempool_type; -- 2.11.4.GIT