This was introduced to not stall other threads while mmap is called by a thread. But now that mmap is unlocked, I believe it is no longer useful.
A full build is slighlty faster with this. But this also needs testing with you favorite multithreaded program. -Otto Index: stdlib/malloc.c =================================================================== RCS file: /home/cvs/src/lib/libc/stdlib/malloc.c,v retrieving revision 1.282 diff -u -p -r1.282 malloc.c --- stdlib/malloc.c 21 Apr 2023 06:19:40 -0000 1.282 +++ stdlib/malloc.c 27 Apr 2023 05:40:49 -0000 @@ -264,24 +264,6 @@ static void malloc_exit(void); (sz) = (uintptr_t)(r)->p & MALLOC_PAGEMASK, \ (sz) = ((sz) == 0 ? (r)->size : B2SIZE((sz) - 1)) -static inline void -_MALLOC_LEAVE(struct dir_info *d) -{ - if (d->malloc_mt) { - d->active--; - _MALLOC_UNLOCK(d->mutex); - } -} - -static inline void -_MALLOC_ENTER(struct dir_info *d) -{ - if (d->malloc_mt) { - _MALLOC_LOCK(d->mutex); - d->active++; - } -} - static inline size_t hash(void *p) { @@ -879,9 +861,7 @@ map(struct dir_info *d, size_t sz, int z return p; } if (psz <= 1) { - _MALLOC_LEAVE(d); p = MMAP(cache->max * sz, d->mmap_flag); - _MALLOC_ENTER(d); if (p != MAP_FAILED) { STATS_ADD(d->malloc_used, cache->max * sz); cache->length = cache->max - 1; @@ -901,9 +881,7 @@ map(struct dir_info *d, size_t sz, int z } } - _MALLOC_LEAVE(d); p = MMAP(sz, d->mmap_flag); - _MALLOC_ENTER(d); if (p != MAP_FAILED) STATS_ADD(d->malloc_used, sz); /* zero fill not needed */