#ifndef __SHM_MM_H__ #define __SHM_MM_H__ #include "usg_common.h" #include "shm_allocator.h" #include "key_def.h" #define SHM_QUEUE_ST_OPENED 0 #define SHM_QUEUE_ST_CLOSED 1 #define SHM_QUEUE_ST_RECYCLED 2 #define SHM_QUEUE_ST_SET 50 struct shm_queue_status_t { int status; time_t createTime; time_t closeTime; }; typedef std::map, SHM_STL_Allocator > > ShmQueueStMap; void shm_mm_init(size_t heap_size) ; void shm_mm_destroy(void) ; void *shm_mm_malloc (size_t size); void shm_mm_free (void *ptr); template T* shm_mm_attach(int key) { void *ptr; // T* tptr; hashtable_t *hashtable = mm_get_hashtable(); ptr = hashtable_get(hashtable, key); if(ptr == NULL || ptr == (void *)1 ) { ptr = mm_malloc(sizeof(T)); hashtable_put(hashtable, key, ptr); new(ptr) T; } return (T*)ptr; } void shm_mm_free_by_key(int key) ; void *shm_mm_realloc (void *ptr, size_t size); int shm_mm_alloc_key(); typedef std::map, SHM_STL_Allocator > > ProcDataZone; #endif