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:
parent
5dadd497ff
commit
5a72b0cd74
@ -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; */
|
||||||
|
Loading…
Reference in New Issue
Block a user