aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-06-05 16:36:21 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2021-06-05 16:36:21 +0200
commit5a72b0cd74d6de8ed39a9704798ce1118b0995f1 (patch)
treeed9c9f77b3b7ef7038508da82f649bf297771ab6
parent5dadd497ffd9835a2860cf89ad781d1b513803dc (diff)
downloadbusybox-w32-5a72b0cd74d6de8ed39a9704798ce1118b0995f1.tar.gz
busybox-w32-5a72b0cd74d6de8ed39a9704798ce1118b0995f1.tar.bz2
busybox-w32-5a72b0cd74d6de8ed39a9704798ce1118b0995f1.zip
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>
-rw-r--r--runit/runsv.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/runit/runsv.c b/runit/runsv.c
index 7fad563f5..a4b8af494 100644
--- a/runit/runsv.c
+++ b/runit/runsv.c
@@ -149,20 +149,17 @@ static void warn_cannot(const char *m)
149 warn2_cannot(m, ""); 149 warn2_cannot(m, "");
150} 150}
151 151
152/* SIGCHLD/TERM handlers are reentrancy-safe because they are unmasked 152/* SIGCHLD/TERM handler is reentrancy-safe because they are unmasked
153 * only over poll() call, not over memory allocations 153 * only over poll() call, not over memory allocations
154 * or printouts. Do not need to save/restore errno either, 154 * or printouts. Do not need to save/restore errno either,
155 * as poll() error is not checked there. 155 * as poll() error is not checked there.
156 */ 156 */
157static void s_child(int sig_no UNUSED_PARAM) 157static void s_chld_term(int sig_no)
158{ 158{
159 if (sig_no == SIGTERM)
160 sigterm = 1;
159 write(selfpipe.wr, "", 1); 161 write(selfpipe.wr, "", 1);
160} 162}
161static void s_term(int sig_no UNUSED_PARAM)
162{
163 sigterm = 1;
164 write(selfpipe.wr, "", 1); /* XXX */
165}
166 163
167static int open_trunc_or_warn(const char *name) 164static int open_trunc_or_warn(const char *name)
168{ 165{
@@ -523,8 +520,10 @@ int runsv_main(int argc UNUSED_PARAM, char **argv)
523 * (poll() wouldn't restart regardless of that flag), 520 * (poll() wouldn't restart regardless of that flag),
524 * we just follow what runit-2.1.2 does: 521 * we just follow what runit-2.1.2 does:
525 */ 522 */
526 bb_signals_norestart(1 << SIGCHLD, s_child); 523 bb_signals_norestart(0
527 bb_signals_norestart(1 << SIGTERM, s_term); 524 + (1 << SIGCHLD)
525 + (1 << SIGTERM)
526 , s_chld_term);
528 527
529 xchdir(dir); 528 xchdir(dir);
530 /* bss: svd[0].pid = 0; */ 529 /* bss: svd[0].pid = 0; */