From f0732bbcbdca67ef8f9444f2aafaf44da81c9e5a Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 01 八月 2020 16:44:00 +0800 Subject: [PATCH] update --- src/queue/mm.c | 104 ++++++++++++++++++++++++++-------------------------- 1 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/queue/mm.c b/src/queue/mm.c index 32ec9d4..39aca9e 100644 --- a/src/queue/mm.c +++ b/src/queue/mm.c @@ -324,70 +324,70 @@ /* * mm_init - Initialize the memory manager */ -bool mm_init2(size_t offset, void **addr) -{ +// bool mm_init2(size_t offset, void **addr) +// { - //宸茬粡鍒濆鍖栬繃浜� - SemUtil::dec(mutex); - if (shmid != -1){ - *addr = shmp; - SemUtil::inc(mutex); - return false; - } +// //宸茬粡鍒濆鍖栬繃浜� +// SemUtil::dec(mutex); +// if (shmid != -1){ +// *addr = shmp; +// SemUtil::inc(mutex); +// return false; +// } - bool first = true; +// bool first = true; - shmid = shmget(SHM_KEY, MAX_HEAP, IPC_CREAT | IPC_EXCL | OBJ_PERMS); - if (shmid == -1 && errno == EEXIST) { - first = false; - shmid = shmget(SHM_KEY, 0, 0); - } - if (shmid == -1) - err_exit(errno, "mm_init shmget"); - shmp = shmat(shmid, key_addr, 0); - if ((long)shmp == -1) - err_exit(errno, "mm_init shmat"); +// shmid = shmget(SHM_KEY, MAX_HEAP, IPC_CREAT | IPC_EXCL | OBJ_PERMS); +// if (shmid == -1 && errno == EEXIST) { +// first = false; +// shmid = shmget(SHM_KEY, 0, 0); +// } +// if (shmid == -1) +// err_exit(errno, "mm_init shmget"); +// shmp = shmat(shmid, key_addr, 0); +// if ((long)shmp == -1) +// err_exit(errno, "mm_init shmat"); - mem_start_brk = (void*)ALIGN((size_t)((char *)shmp + offset + ALIGNMENT)); - mem_max_addr = (void *)((char *)shmp+ MAX_HEAP); - mem_max_size = (char *)mem_max_addr - (char*)mem_start_brk; - mem_brk = mem_start_brk; - void *free_listp; - /* Create the initial empty heap */ - int initsize = ALIGN(3 * SIZE_T_SIZE + 2 * PTR_SIZE); - heap_listp = (char *)mem_start_brk + initsize - 2 * SIZE_T_SIZE - 2 * PTR_SIZE; +// mem_start_brk = (void*)ALIGN((size_t)((char *)shmp + offset + ALIGNMENT)); +// mem_max_addr = (void *)((char *)shmp+ MAX_HEAP); +// mem_max_size = (char *)mem_max_addr - (char*)mem_start_brk; +// mem_brk = mem_start_brk; +// void *free_listp; +// /* Create the initial empty heap */ +// int initsize = ALIGN(3 * SIZE_T_SIZE + 2 * PTR_SIZE); +// heap_listp = (char *)mem_start_brk + initsize - 2 * SIZE_T_SIZE - 2 * PTR_SIZE; - if(!first) { - *addr = shmp; - SemUtil::inc(mutex); - return first; - } +// if(!first) { +// *addr = shmp; +// SemUtil::inc(mutex); +// return first; +// } - if ((mem_sbrk(initsize)) == (void *) - 1) - err_exit(errno, "mm_init mem_sbrk"); +// if ((mem_sbrk(initsize)) == (void *) - 1) +// err_exit(errno, "mm_init mem_sbrk"); - PUT((char *)mem_start_brk + initsize - SIZE_T_SIZE, PACK(0, 1)); /* Epilogue header */ - /*PUT(HDRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); - PUT(FTRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1));*/ +// PUT((char *)mem_start_brk + initsize - SIZE_T_SIZE, PACK(0, 1)); /* Epilogue header */ +// /*PUT(HDRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); +// PUT(FTRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1));*/ - PUT(HDRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); - PUT(FTRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); +// PUT(HDRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); +// PUT(FTRP(heap_listp), PACK(initsize - SIZE_T_SIZE, 1)); - /** - * here the heap_listp can be look as a ancher which concat the header and tail of free-list to form a ring, and the heap_list itself will never be used as a free block - */ - PUT_PTR(SUCCRP(heap_listp), heap_listp); - PUT_PTR(PREDRP(heap_listp), heap_listp); - /* Extend the empty heap with a free block of CHUNKSIZE bytes */ - if ((free_listp = extend_heap(mem_max_size - initsize - ALIGNMENT)) == NULL) - err_exit(errno, "mm_init extend_heap"); +// /** +// * here the heap_listp can be look as a ancher which concat the header and tail of free-list to form a ring, and the heap_list itself will never be used as a free block +// */ +// PUT_PTR(SUCCRP(heap_listp), heap_listp); +// PUT_PTR(PREDRP(heap_listp), heap_listp); +// /* Extend the empty heap with a free block of CHUNKSIZE bytes */ +// if ((free_listp = extend_heap(mem_max_size - initsize - ALIGNMENT)) == NULL) +// err_exit(errno, "mm_init extend_heap"); - *addr = shmp; - SemUtil::inc(mutex); - return first; -} +// *addr = shmp; +// SemUtil::inc(mutex); +// return first; +// } -- Gitblit v1.8.0