mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-17 18:29:55 +00:00
base-linux: avoid global ctor in wait_for_exit
This patch replaces the global '_wait_for_exit_sem' object by a local static variable, which does not rely on the global ctors. It thereby fixes the fault_detection test after the removal of the global ctors execution from core ("base: remove component.cc from core"). Issue #4784
This commit is contained in:
parent
1a7ff195d9
commit
6e03d731a2
@ -69,20 +69,26 @@ class Pipe_semaphore
|
||||
};
|
||||
|
||||
|
||||
static Pipe_semaphore _wait_for_exit_sem; /* wakeup of '_wait_for_exit' */
|
||||
static bool _do_exit = false; /* exit condition */
|
||||
static Pipe_semaphore &_wait_for_exit_sem()
|
||||
{
|
||||
static Pipe_semaphore inst { };
|
||||
return inst;
|
||||
}
|
||||
|
||||
|
||||
static bool _do_exit = false; /* exit condition */
|
||||
|
||||
|
||||
static void sigint_handler(int)
|
||||
{
|
||||
_do_exit = true;
|
||||
_wait_for_exit_sem.up();
|
||||
_wait_for_exit_sem().up();
|
||||
}
|
||||
|
||||
|
||||
static void sigchld_handler(int)
|
||||
{
|
||||
_wait_for_exit_sem.up();
|
||||
_wait_for_exit_sem().up();
|
||||
}
|
||||
|
||||
|
||||
@ -125,7 +131,7 @@ void Core::Platform::wait_for_exit()
|
||||
/*
|
||||
* Block until a signal occurs.
|
||||
*/
|
||||
_wait_for_exit_sem.down();
|
||||
_wait_for_exit_sem().down();
|
||||
|
||||
/*
|
||||
* Each time, the '_wait_for_exit_sem' gets unlocked, we could have
|
||||
|
Loading…
Reference in New Issue
Block a user