This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi! For second and following new_heap unless mmap is used in the mean time mmap(, HEAP_MAX_SIZE << 1, ...) will be very likely aligned to HEAP_MAX_SIZE, so I think it is worth avoiding an useless munmap(x, 0) syscall at the cost of a conditional branch. Do you agree? Below is how a typicall new_heap looks in strace. 2001-07-18 Jakub Jelinek <jakub@redhat.com> * malloc/malloc (new_heap): Don't call munmap for zero length. --- libc/malloc/malloc.c.jj Sat May 5 15:47:23 2001 +++ libc/malloc/malloc.c Wed Jul 18 22:18:15 2001 @@ -2031,7 +2031,8 @@ new_heap(size) size_t size; if(p1 != MAP_FAILED) { p2 = (char *)(((unsigned long)p1 + (HEAP_MAX_SIZE-1)) & ~(HEAP_MAX_SIZE-1)); ul = p2 - p1; - munmap(p1, ul); + if (ul) + munmap(p1, ul); munmap(p2 + HEAP_MAX_SIZE, HEAP_MAX_SIZE - ul); } else { /* Try to take the chance that an allocation of only HEAP_MAX_SIZE mprotect(0x402fd000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x402fe000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x402ff000, 4096, PROT_READ|PROT_WRITE) = 0 mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x40300000 munmap(0x40300000, 0) = -1 EINVAL (Invalid argument) munmap(0x40400000, 1048576) = 0 mprotect(0x40300000, 32768, PROT_READ|PROT_WRITE) = 0 mprotect(0x40308000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x40309000, 4096, PROT_READ|PROT_WRITE) = 0 ... mprotect(0x403fd000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x403fe000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x403ff000, 4096, PROT_READ|PROT_WRITE) = 0 mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x40400000 munmap(0x40400000, 0) = -1 EINVAL (Invalid argument) munmap(0x40500000, 1048576) = 0 mprotect(0x40400000, 32768, PROT_READ|PROT_WRITE) = 0 mprotect(0x40408000, 4096, PROT_READ|PROT_WRITE) = 0 Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |