]> git.proxmox.com Git - wasi-libc.git/blobdiff - libc-top-half/musl/src/malloc/oldmalloc/malloc.c
Update to musl 1.2.2.
[wasi-libc.git] / libc-top-half / musl / src / malloc / oldmalloc / malloc.c
index c0997ad858fdf8d554eece3b29e02affedf0aa90..53f5f959ec24c31dc57a4a22af1c445ccc35804f 100644 (file)
@@ -9,6 +9,11 @@
 #include "atomic.h"
 #include "pthread_impl.h"
 #include "malloc_impl.h"
+#include "fork_impl.h"
+
+#define malloc __libc_malloc
+#define realloc __libc_realloc
+#define free __libc_free
 
 #if defined(__GNUC__) && defined(__PIC__)
 #define inline inline __attribute__((always_inline))
@@ -527,3 +532,21 @@ void __malloc_donate(char *start, char *end)
        c->csize = n->psize = C_INUSE | (end-start);
        __bin_chunk(c);
 }
+
+void __malloc_atfork(int who)
+{
+       if (who<0) {
+               lock(mal.split_merge_lock);
+               for (int i=0; i<64; i++)
+                       lock(mal.bins[i].lock);
+       } else if (!who) {
+               for (int i=0; i<64; i++)
+                       unlock(mal.bins[i].lock);
+               unlock(mal.split_merge_lock);
+       } else {
+               for (int i=0; i<64; i++)
+                       mal.bins[i].lock[0] = mal.bins[i].lock[1] = 0;
+               mal.split_merge_lock[1] = 0;
+               mal.split_merge_lock[0] = 0;
+       }
+}