#include "shm_mm.h" #include "mm.h" #include "sem_util.h" void shm_mm_init(size_t heap_size) { mm_init(heap_size); shm_mm_attach(SHM_QUEUE_ST_KEY); } void shm_mm_destroy(void) { mm_destroy(); } void *shm_mm_malloc (size_t size) { return mm_malloc(size); } void shm_mm_free (void *ptr) { mm_free(ptr); } template T* shm_mm_attach(int key) { void *ptr; // T* tptr; hashtable_t *hashtable = mm_get_hashtable(); ptr = hashtable_get(hashtable, key); // printf("shm_mm_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("shm_mm_malloc_by_key use new %d, %p\n", key, ptr); } return (T*)ptr; } void shm_mm_free_by_key(int key) { return mm_free_by_key(key); } void *shm_mm_realloc (void *ptr, size_t size) { return mm_realloc(ptr, size); } int shm_mm_alloc_key() { return mm_alloc_key(); } // extern int mm_checkheap(int verbose); #endif