From nobody Wed Dec 27 06:08:12 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4T0LmD65c2z55Bh1; Wed, 27 Dec 2023 06:08:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T0LmD4Mq5z3J1s; Wed, 27 Dec 2023 06:08:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703657292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uwpd2F8htLIyUBTGjWt5cpAxG536egZMSUXzHDya2Pk=; b=gZM4+dGpgS3A0vocmRELmiyN8e5HAVI+87YkiT7zmRqrgzJKfR+uzGfk5XV077ZpuVlM4Q O/w+jJ1DEdCOQr395XhNLTYk9G+kMk6/bvaThnNyLN0BOHsBiRo+YcgejgVDSHMKVlZMyx qKfZfNe/TQvjaQZSFAQX+jng8hy9djfQSn+ynVv2QhnZNjz5OUIt2GUe7Y29OKGUCVd+0M xytM95JbvIRgHL9If6hegC0qLfHmWIPbsKUr4kX9JrOm66sFYjWD+X999tb9i3Tx7x1HV0 kyLG8Z5GpzkJAk7Amh52254vOWm86HOIdjoKAsQicyAFKCcaf0NE5bop5evGzA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1703657292; a=rsa-sha256; cv=none; b=aQGM3kz7n17W8XpF1hq+3GnoEwumXSxQC+dbtBP17w7NYYkwYZLCyEe+rIt2fV6eGykcYA aunfldcf7LvwXATKBD12Aramcfp2VJh22fq9tJr7bIbII+GrYLM8xQ4ePFPE2RrEXCd6mq rEeT4gPGbzIHVnwWm+CPPqsAlBJsnoadTWQPR3gXV90R55cGDQkv93IIRtms0NSqy32pKQ +42xyOYi4ne6RQwiasDdzNrGuwPm/Ac1KoMDSMnuJdwaefbfo6MzQW5raLZIq1JE6GWLVN f3nQFP2gZUhgNSIFO2HIcMVkv3js0Kw55aaoq5X4FpqVivz6wuGNuTcP162wgw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703657292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uwpd2F8htLIyUBTGjWt5cpAxG536egZMSUXzHDya2Pk=; b=Zr75DF/7VuS1Z8vtxUyEvFMbPRUHozd5Gb1+mjrXlTw5VBExRhcnMs3a4K26a7ZzIAElbm 5sr6Ca4Nre/6Kur7FAJuB2xh7X77CUWKdTOxolGfPm1rNlHouRKTBGcsNyceCw4I21LEKh YcQVIQbKXmZCFMDFIpfk6XbB+72Z4wuCi1PR4sFrrJAQbRx0gabEnYStNwz71BkTA1Rwj3 Feahq/Spd7LPiY8K1RP6MrNCMbE6DHOeod5P0x2kI8D7OFH4oGWVrRAnj4Kp1eoHnvvlX6 Y5r8oct1B0mz2g4aKW5RdD+53BJ0xypoQet08HyA4QQXs0WQwf+fuxlecDF6vg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4T0LmD3T74zCQg; Wed, 27 Dec 2023 06:08:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3BR68C1P025030; Wed, 27 Dec 2023 06:08:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3BR68CH4025027; Wed, 27 Dec 2023 06:08:12 GMT (envelope-from git) Date: Wed, 27 Dec 2023 06:08:12 GMT Message-Id: <202312270608.3BR68CH4025027@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 407e3790c3a0 - main - daemon: separate pipe_fd[2] into pipe_rd and pipe_wr List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 407e3790c3a0652beb5c97e4049a58a6e2118ce4 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=407e3790c3a0652beb5c97e4049a58a6e2118ce4 commit 407e3790c3a0652beb5c97e4049a58a6e2118ce4 Author: Ihor Antonov AuthorDate: 2023-12-27 06:07:26 +0000 Commit: Kyle Evans CommitDate: 2023-12-27 06:07:26 +0000 daemon: separate pipe_fd[2] into pipe_rd and pipe_wr This improves code readability and prevents mixing up read and write ends of the pipe. Reviewed by: cperciva, kevans Requested by: kevans --- usr.sbin/daemon/daemon.c | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/usr.sbin/daemon/daemon.c b/usr.sbin/daemon/daemon.c index 066240fc8302..f349a382edd2 100644 --- a/usr.sbin/daemon/daemon.c +++ b/usr.sbin/daemon/daemon.c @@ -65,10 +65,10 @@ enum daemon_mode { MODE_NOCHILD, /* child is terminated, final state of the event loop */ }; + struct daemon_state { unsigned char buf[LBUF_SIZE]; size_t pos; - int pipe_fd[2]; char **argv; const char *child_pidfile; const char *parent_pidfile; @@ -80,6 +80,8 @@ struct daemon_state { struct pidfh *child_pidfh; enum daemon_mode mode; int pid; + int pipe_rd; + int pipe_wr; int keep_cur_workdir; int restart_delay; int stdmask; @@ -367,6 +369,7 @@ daemon_eventloop(struct daemon_state *state) struct kevent event; int kq; int ret; + int pipe_fd[2]; /* * Try to protect against pageout kill. Ignore the @@ -375,12 +378,14 @@ daemon_eventloop(struct daemon_state *state) */ (void)madvise(NULL, 0, MADV_PROTECT); - if (pipe(state->pipe_fd)) { + if (pipe(pipe_fd)) { err(1, "pipe"); } + state->pipe_rd = pipe_fd[0]; + state->pipe_wr = pipe_fd[1]; kq = kqueuex(KQUEUE_CLOEXEC); - EV_SET(&event, state->pipe_fd[0], EVFILT_READ, EV_ADD|EV_CLEAR, 0, 0, + EV_SET(&event, state->pipe_rd, EVFILT_READ, EV_ADD|EV_CLEAR, 0, 0, NULL); if (kevent(kq, &event, 1, NULL, 0, NULL) == -1) { err(EXIT_FAILURE, "failed to register kevent"); @@ -420,8 +425,8 @@ daemon_eventloop(struct daemon_state *state) } /* case: pid > 0; fork succeeded */ - close(state->pipe_fd[1]); - state->pipe_fd[1] = -1; + close(state->pipe_wr); + state->pipe_wr = -1; setproctitle("%s[%d]", state->title, (int)state->pid); setbuf(stdout, NULL); @@ -495,8 +500,8 @@ daemon_eventloop(struct daemon_state *state) } close(kq); - close(state->pipe_fd[0]); - state->pipe_fd[0] = -1; + close(state->pipe_rd); + state->pipe_rd = -1; } static void @@ -592,7 +597,7 @@ listen_child(struct daemon_state *state) assert(state != NULL); assert(state->pos < LBUF_SIZE - 1); - rv = read(state->pipe_fd[0], state->buf + state->pos, LBUF_SIZE - state->pos - 1); + rv = read(state->pipe_rd, state->buf + state->pos, LBUF_SIZE - state->pos - 1); if (rv > 0) { state->pos += rv; assert(state->pos <= LBUF_SIZE - 1); @@ -691,7 +696,6 @@ daemon_state_init(struct daemon_state *state) *state = (struct daemon_state) { .buf = {0}, .pos = 0, - .pipe_fd = { -1, -1 }, .argv = NULL, .parent_pidfh = NULL, .child_pidfh = NULL, @@ -702,6 +706,8 @@ daemon_state_init(struct daemon_state *state) .mode = MODE_DAEMON, .restart_enabled = false, .pid = 0, + .pipe_rd = -1, + .pipe_wr = -1, .keep_cur_workdir = 1, .restart_delay = 1, .stdmask = STDOUT_FILENO | STDERR_FILENO, @@ -724,12 +730,12 @@ daemon_terminate(struct daemon_state *state) if (state->output_fd >= 0) { close(state->output_fd); } - if (state->pipe_fd[0] >= 0) { - close(state->pipe_fd[0]); + if (state->pipe_rd >= 0) { + close(state->pipe_rd); } - if (state->pipe_fd[1] >= 0) { - close(state->pipe_fd[1]); + if (state->pipe_wr >= 0) { + close(state->pipe_wr); } if (state->syslog_enabled) { closelog(); @@ -769,20 +775,20 @@ static void daemon_set_child_pipe(struct daemon_state *state) { if (state->stdmask & STDERR_FILENO) { - if (dup2(state->pipe_fd[1], STDERR_FILENO) == -1) { + if (dup2(state->pipe_wr, STDERR_FILENO) == -1) { err(1, "dup2"); } } if (state->stdmask & STDOUT_FILENO) { - if (dup2(state->pipe_fd[1], STDOUT_FILENO) == -1) { + if (dup2(state->pipe_wr, STDOUT_FILENO) == -1) { err(1, "dup2"); } } - if (state->pipe_fd[1] != STDERR_FILENO && - state->pipe_fd[1] != STDOUT_FILENO) { - close(state->pipe_fd[1]); + if (state->pipe_wr != STDERR_FILENO && + state->pipe_wr != STDOUT_FILENO) { + close(state->pipe_wr); } /* The child gets dup'd pipes. */ - close(state->pipe_fd[0]); + close(state->pipe_rd); }