From 554529bb69cd610e83db2c9a80b4f36f5225d80f Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 27 七月 2020 17:56:34 +0800 Subject: [PATCH] restart bus --- src/queue/include/mem_pool.h | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/queue/include/mem_pool.h b/src/queue/include/mem_pool.h index 17a7c5c..d5a4110 100644 --- a/src/queue/include/mem_pool.h +++ b/src/queue/include/mem_pool.h @@ -34,6 +34,22 @@ return ptr; } +template <typename T> +static inline T* mem_pool_attach(int key) { + void *ptr; + // T* tptr; + hashtable_t *hashtable = mm_get_hashtable(); + ptr = hashtable_get(hashtable, key); +printf("mem_pool_malloc_by_key malloc before %d, %p\n", key, ptr); + if(ptr == NULL || ptr == (void *)1 ) { + ptr = mm_malloc(sizeof(T)); + hashtable_put(hashtable, key, ptr); + new(ptr) T; +printf("mem_pool_malloc_by_key use new %d, %p\n", key, ptr); + } + return (T*)ptr; +} + static inline void mem_pool_free (void *ptr) { mm_free(ptr); // notify malloc @@ -45,10 +61,12 @@ return mm_realloc(ptr, size); } -static inline hashtable_t * mem_pool_get_hashtable() { - return mm_get_hashtable(); - +static inline int mem_pool_alloc_key() { + hashtable_t *hashtable = mm_get_hashtable(); + return hashtable_alloc_key(hashtable); } + + // extern int mm_checkheap(int verbose); -- Gitblit v1.8.0