runsv: code shrink: use single handler function for SIGTERM and SIGCHLD

function                                             old     new   delta
s_chld_term                                            -      36     +36
runsv_main                                          1677    1662     -15
s_child                                               22       -     -22
s_term                                                29       -     -29
------------------------------------------------------------------------------
(add/remove: 1/2 grow/shrink: 0/1 up/down: 36/-66)            Total: -30 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-06-05 16:36:21 +02:00
parent 5dadd497ff
commit 5a72b0cd74

View File

@ -149,20 +149,17 @@ static void warn_cannot(const char *m)
warn2_cannot(m, ""); warn2_cannot(m, "");
} }
/* SIGCHLD/TERM handlers are reentrancy-safe because they are unmasked /* SIGCHLD/TERM handler is reentrancy-safe because they are unmasked
* only over poll() call, not over memory allocations * only over poll() call, not over memory allocations
* or printouts. Do not need to save/restore errno either, * or printouts. Do not need to save/restore errno either,
* as poll() error is not checked there. * as poll() error is not checked there.
*/ */
static void s_child(int sig_no UNUSED_PARAM) static void s_chld_term(int sig_no)
{ {
if (sig_no == SIGTERM)
sigterm = 1;
write(selfpipe.wr, "", 1); write(selfpipe.wr, "", 1);
} }
static void s_term(int sig_no UNUSED_PARAM)
{
sigterm = 1;
write(selfpipe.wr, "", 1); /* XXX */
}
static int open_trunc_or_warn(const char *name) static int open_trunc_or_warn(const char *name)
{ {
@ -523,8 +520,10 @@ int runsv_main(int argc UNUSED_PARAM, char **argv)
* (poll() wouldn't restart regardless of that flag), * (poll() wouldn't restart regardless of that flag),
* we just follow what runit-2.1.2 does: * we just follow what runit-2.1.2 does:
*/ */
bb_signals_norestart(1 << SIGCHLD, s_child); bb_signals_norestart(0
bb_signals_norestart(1 << SIGTERM, s_term); + (1 << SIGCHLD)
+ (1 << SIGTERM)
, s_chld_term);
xchdir(dir); xchdir(dir);
/* bss: svd[0].pid = 0; */ /* bss: svd[0].pid = 0; */