Move freeze() into shared/

Library code should not call freeze(), this is something that should
only be done by "application code", so moving it into shared/ is appropriate.

The fallback to call _exit() is dropped: let's trust that the infinite loop
is infinite.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2021-07-23 11:39:45 +02:00
parent 3e24e8cd64
commit 45a68ed307
6 changed files with 28 additions and 29 deletions
-24
View File
@@ -1037,30 +1037,6 @@ bool is_main_thread(void) {
return cached > 0;
}
_noreturn_ void freeze(void) {
log_close();
/* Make sure nobody waits for us on a socket anymore */
(void) close_all_fds(NULL, 0);
sync();
/* Let's not freeze right away, but keep reaping zombies. */
for (;;) {
int r;
siginfo_t si = {};
r = waitid(P_ALL, 0, &si, WEXITED);
if (r < 0 && errno != EINTR)
break;
}
/* waitid() failed with an unexpected error, things are really borked. Freeze now! */
for (;;)
pause();
}
unsigned long personality_from_string(const char *p) {
int architecture;
-2
View File
@@ -82,8 +82,6 @@ int pid_from_same_root_fs(pid_t pid);
bool is_main_thread(void);
_noreturn_ void freeze(void);
#ifndef PERSONALITY_INVALID
/* personality(7) documents that 0xffffffffUL is used for querying the
* current personality, hence let's use that here as error