diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-05-30 23:34:23 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-05-30 23:38:49 +0200 |
commit | 6f6d157c55b6973f0a557b65269b212d9dcd1fbe (patch) | |
tree | 6931e5781c40669a25e888c1a46c7a2db42ab000 /mach-defpager | |
parent | d213bd8ef04dd947ff5c53a8efeb6cba11621396 (diff) |
Revert "drop the deprecated malloc/free hooks in hurd/mach-defpager"
This reverts commit 8c49801c8f7e3f800cabedf8fca8ccec3cf35a22.
The malloc hook is needed for calloc.
Diffstat (limited to 'mach-defpager')
-rw-r--r-- | mach-defpager/kalloc.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/mach-defpager/kalloc.c b/mach-defpager/kalloc.c index 35ddf9a7..ef844acc 100644 --- a/mach-defpager/kalloc.c +++ b/mach-defpager/kalloc.c @@ -34,9 +34,23 @@ #include <mach.h> #include <pthread.h> /* for spin locks */ +#include <malloc.h> /* for malloc_hook/free_hook */ #include "wiring.h" +static void init_hook (void); +static void *malloc_hook (size_t size, const void *caller); +static void free_hook (void *ptr, const void *caller); + +/* GNU libc 2.14 defines this macro to declare hook variables as volatile. + Define it as empty for older libc versions. */ +#ifndef __MALLOC_HOOK_VOLATILE +# define __MALLOC_HOOK_VOLATILE +#endif + +void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void) = init_hook; + + /* #define DEBUG */ /* @@ -250,14 +264,21 @@ kfree( void *data, } } -void * -malloc (size_t size) +static void +init_hook (void) +{ + __malloc_hook = malloc_hook; + __free_hook = free_hook; +} + +static void * +malloc_hook (size_t size, const void *caller) { return (void *) kalloc ((vm_size_t) size); } -void -free (void *ptr) +static void +free_hook (void *ptr, const void *caller) { /* Just ignore harmless attempts at cleanliness. */ /* panic("free not implemented"); */ |