| | |
| | | |
| | | newsize = ALIGN(size + (SIZE_T_SIZE << 1) + (PTR_SIZE << 1) ); |
| | | |
| | | //fprintf(stderr, "mm_malloc : size=%u\n", size); |
| | | /* Search the free list for a fit */ |
| | | SemUtil::dec(mutex); |
| | | if ((ptr = find_fit(newsize)) != NULL) |
| | |
| | | return aptr; |
| | | } else { |
| | | SemUtil::inc(mutex); |
| | | abort(); |
| | | err_exit(0, "mm_malloc : out of memery\n"); |
| | | err_msg(0, "mm_malloc : out of memery\n"); |
| | | LoggerFactory::getLogger()->fatal("mm_malloc : out of memery\n"); |
| | | // abort(); |
| | | exit(1); |
| | | |
| | | return NULL; |
| | | } |
| | | |
| | |
| | | first = false; |
| | | shmid = shmget(SHM_KEY, 0, 0); |
| | | } |
| | | |
| | | if (shmid == -1) |
| | | err_exit(errno, "mm_init shmget"); |
| | | shmp = shmat(shmid, key_addr, 0); |
| | |
| | | else |
| | | LoggerFactory::getLogger()->debug("shared memory destroy\n"); |
| | | |
| | | LoggerFactory::getLogger()->debug( "mm_destroy: real destroy."); |
| | | |
| | | SemUtil::inc(mutex); |
| | | SemUtil::remove(mutex); |
| | | return true; |
| | |
| | | |
| | | void mm_free_by_key(int key) { |
| | | void *ptr; |
| | | |
| | | ptr = hashtable_get(hashtable, key); |
| | | if(ptr != NULL) { |
| | | mm_free(ptr); |