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 */