On Thu, Apr 27, 2023 at 02:17:10PM +0200, Otto Moerbeek wrote:

> 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.

I'd really would like some feedback/performance tests on this.

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

Reply via email to