diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-09-22 01:47:47 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-09-22 01:47:47 +0200 |
commit | a58ce85fb64ec8a7a3684fb0a56a30a1c67b2d11 (patch) | |
tree | a29cdbf0bc0b386d6a1e05bdc73f056576f4b2ad /hurd/hurdmalloc.c | |
parent | f76453c31593957fec1a99b986bfa5506618b79c (diff) |
hurdmalloc: Run fork handler as late as possible [BZ #19431]
This is the hurd-specific follow-up for
29d794863cd6e03115d3670707cc873a9965ba92 : hurdmalloc also needs the
same fix
* hurd/hurdmalloc.c (malloc_fork_prepare): Rename to
_hurd_malloc_fork_prepare.
(malloc_fork_parent): Rename to _hurd_malloc_fork_parent.
(malloc_fork_child): Rename to _hurd_malloc_fork_child.
(_hurd_fork_prepare_hook): Drop malloc_fork_prepare.
(_hurd_fork_parent_hook): Drop malloc_fork_parent.
(_hurd_fork_child_hook): Drop malloc_fork_child.
* hurd/hurdmalloc.h (_hurd_malloc_fork_prepare,
_hurd_malloc_fork_parent, _hurd_malloc_fork_child): Add declarations.
* sysdeps/mach/hurd/fork.c (__fork): Call __malloc_fork_lock_parent
after locking locks (notably hurd_dtable_lock). Call
_hurd_malloc_fork_prepare after that. Call _hurd_malloc_fork_parent
before __malloc_fork_unlock_parent and _hurd_malloc_fork_child before
__malloc_fork_unlock_child.
Diffstat (limited to 'hurd/hurdmalloc.c')
-rw-r--r-- | hurd/hurdmalloc.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/hurd/hurdmalloc.c b/hurd/hurdmalloc.c index 071abeb718..2b5ad6e129 100644 --- a/hurd/hurdmalloc.c +++ b/hurd/hurdmalloc.c @@ -409,8 +409,8 @@ print_malloc_free_list (void) } #endif /* DEBUG */ -static void -malloc_fork_prepare(void) +void +_hurd_malloc_fork_prepare(void) /* * Prepare the malloc module for a fork by insuring that no thread is in a * malloc critical section. @@ -423,8 +423,8 @@ malloc_fork_prepare(void) } } -static void -malloc_fork_parent(void) +void +_hurd_malloc_fork_parent(void) /* * Called in the parent process after a fork() to resume normal operation. */ @@ -436,8 +436,8 @@ malloc_fork_parent(void) } } -static void -malloc_fork_child(void) +void +_hurd_malloc_fork_child(void) /* * Called in the child process after a fork() to resume normal operation. */ @@ -450,7 +450,4 @@ malloc_fork_child(void) } -text_set_element (_hurd_fork_prepare_hook, malloc_fork_prepare); -text_set_element (_hurd_fork_parent_hook, malloc_fork_parent); -text_set_element (_hurd_fork_child_hook, malloc_fork_child); text_set_element (_hurd_preinit_hook, malloc_init); |