From nobody Fri Jul 11 15:46:33 2025 X-Original-To: dev-commits-src-main@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 4bdx0C1yYtz61V57; Fri, 11 Jul 2025 15:46:35 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (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 "smtp.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bdx0C1CgSz46kW; Fri, 11 Jul 2025 15:46:35 +0000 (UTC) (envelope-from jhb@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752248795; 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: in-reply-to:in-reply-to:references:references; bh=deKf8oDjcb48Z1eZAG0AoOOKowfI2Y3wFaR6Ohf8sWw=; b=NcqH8hgbRblGKL+m9yl8nPRM8RygeWqeFTAwOrXUyrLk1lk0a6zckPNPBvjx9KnLfZ22dy 7XfcNxVCdtKQO8f+rHV4+ps7Iw29NVoC55Be7WrCi5SX0lpGCHYhA8ngiebdbeYRFy0Uzh mRLUkCDG7JX1QpdqoRJP8vRVeTXxiOAkVLzU+Uq7AcgUvt/6DIWP0xUv+Kj5lBbtJZcjaP co++i/4UfVLUn7HH5VDaXReQClPxvBEN6EuTf/FwSQGkiAis5YU4MNr2cGSlRyFaWBm4pI 2TtazO9oJst6k6WaQAmQeI3WYHmKg1SzIyhftWtm1luMp2JZbdoyenFJGUPXOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752248795; 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: in-reply-to:in-reply-to:references:references; bh=deKf8oDjcb48Z1eZAG0AoOOKowfI2Y3wFaR6Ohf8sWw=; b=jrxLpwM3eHsyulWVXH32DTCIOk4tDvsPmeZr9Cek+fN0AzD+UrMmgD+HGIYlJ7UsCuhTOO s/AJa0c3g91K5D1+fmNocsfLlBBW6nLJAfUFB2tjWi47RQlCJ6qYTYB4dJo2xPkLhwLo6V g6o1j4fMIkcZK+CUP7qaYOeuaZpNDWB9eDfMLE56DQCCPFwXo1vJVsW5zsgH+UBoCqIHKA DEI9b85BZNlu5Gog63EIP1Ip9zzvp27fdrTxnn8/iOq0YxQgIoXgO2VtsvVE3SnU2AsM8w /WPvK5B0DBgXnO8mbKVOrQpotAeaCRUZ4X05KvEC9yVbVy0/739d04VIklwu5Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1752248795; a=rsa-sha256; cv=none; b=d2iFMdTU8JQBCyn/4mxgExX7HZWP9Jr7BPELphqdTot2OocJRbTxxXiXE2QwEW2YAz+ALA NgX7+0zfe5sHyWjLd3gYXKCw+FJfuMcVkBDdq1I3yNaBrZhufM/7rtAe/OEUa+rc8kQHtE o4cn1CKNSWsutZJoG8euKJrM9kpaTO+WHzQAafUDBcLURz3Rw60TrqSmqdZ135emlOX3Nu oWckFw5FeEG9o0Hx1TT73g8apyaL9wW4qKHb3+tVsvZjMg8IiIFL44SU6Y2fQ7zB4ZZNA/ FNmcpEEWg03GiErHmsr4g5E7Zsi3aIHqsdMul64cYig25PQIRnpaE7Sm4pusJw== Received: from [IPV6:2601:5c0:4200:b830:55b6:3b49:2cd9:9d38] (unknown [IPv6:2601:5c0:4200:b830:55b6:3b49:2cd9:9d38]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 4bdx0B4XMDz7Lv; Fri, 11 Jul 2025 15:46:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Message-ID: Date: Fri, 11 Jul 2025 11:46:33 -0400 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: git: ba0d9b43e940 - main - kern_descrip.c: provide helpers to translate between fd flags namespace Content-Language: en-US To: Konstantin Belousov , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202507082149.568LnGOU086303@gitrepo.freebsd.org> From: John Baldwin In-Reply-To: <202507082149.568LnGOU086303@gitrepo.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/8/25 17:49, Konstantin Belousov wrote: > The branch main has been updated by kib: > > URL: https://cgit.FreeBSD.org/src/commit/?id=ba0d9b43e940077f4025e7e4e85d16c8d525db79 > > commit ba0d9b43e940077f4025e7e4e85d16c8d525db79 > Author: Konstantin Belousov > AuthorDate: 2025-07-08 16:30:29 +0000 > Commit: Konstantin Belousov > CommitDate: 2025-07-08 21:48:59 +0000 > > kern_descrip.c: provide helpers to translate between fd flags namespace > > Reviewed by: markj > Sponsored by: The FreeBSD Foundation > Differential revision: https://reviews.freebsd.org/D51206 > --- > sys/kern/kern_descrip.c | 110 +++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 90 insertions(+), 20 deletions(-) > > diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c > index 406236fc2723..2e1da2fdee29 100644 > --- a/sys/kern/kern_descrip.c > +++ b/sys/kern/kern_descrip.c > @@ -480,6 +480,90 @@ kern_fcntl_freebsd(struct thread *td, int fd, int cmd, intptr_t arg) > return (error); > } > > +struct flags_trans_elem { > + u_int f; > + u_int t; > +}; > + > +static u_int > +flags_trans(const struct flags_trans_elem *ftes, int nitems, u_int from_flags) > +{ > + u_int res; > + int i; > + > + res = 0; > + for (i = 0; i < nitems; i++) { > + if ((from_flags & ftes[i].f) != 0) > + res |= ftes[i].t; > + } > + return (res); > +} > + > +static uint8_t > +fd_to_fde_flags(int fd_flags) > +{ > + static const struct flags_trans_elem fd_to_fde_flags_s[] = { > + { .f = FD_CLOEXEC, .t = UF_EXCLOSE }, > + { .f = FD_CLOFORK, .t = UF_FOCLOSE }, > + { .f = FD_RESOLVE_BENEATH, .t = UF_RESOLVE_BENEATH }, > + }; > + > + return (flags_trans(fd_to_fde_flags_s, nitems(fd_to_fde_flags_s), > + fd_flags)); > +} > + > +static int > +fde_to_fd_flags(uint8_t fde_flags) > +{ > + static const struct flags_trans_elem fde_to_fd_flags_s[] = { > + { .f = UF_EXCLOSE, .t = FD_CLOEXEC }, > + { .f = UF_FOCLOSE, .t = FD_CLOFORK }, > + { .f = UF_RESOLVE_BENEATH, .t = FD_RESOLVE_BENEATH }, > + }; > + > + return (flags_trans(fde_to_fd_flags_s, nitems(fde_to_fd_flags_s), > + fde_flags)); > +} > + > +static uint8_t > +fddup_to_fde_flags(int fddup_flags) > +{ > + static const struct flags_trans_elem fddup_to_fde_flags_s[] = { > + { .f = FDDUP_FLAG_CLOEXEC, .t = UF_EXCLOSE }, > + { .f = FDDUP_FLAG_CLOFORK, .t = UF_FOCLOSE }, > + }; > + > + return (flags_trans(fddup_to_fde_flags_s, nitems(fddup_to_fde_flags_s), > + fddup_flags)); > +} > + > +static uint8_t > +close_range_to_fde_flags(int close_range_flags) > +{ > + static const struct flags_trans_elem close_range_to_fde_flags_s[] = { > + { .f = CLOSE_RANGE_CLOEXEC, .t = UF_EXCLOSE }, > + { .f = CLOSE_RANGE_CLOFORK, .t = UF_FOCLOSE }, > + }; > + > + return (flags_trans(close_range_to_fde_flags_s, > + nitems(close_range_to_fde_flags_s), close_range_flags)); > +} > + > +static uint8_t > +open_to_fde_flags(int open_flags, bool sticky_orb) > +{ > + static const struct flags_trans_elem open_to_fde_flags_s[] = { > + { .f = O_CLOEXEC, .t = UF_EXCLOSE }, > + { .f = O_CLOFORK, .t = UF_FOCLOSE }, > + { .f = O_RESOLVE_BENEATH, .t = UF_RESOLVE_BENEATH }, > + }; > + _Static_assert(open_to_fde_flags_s[nitems(open_to_fde_flags_s) - 1].f == > + O_RESOLVE_BENEATH, "O_RESOLVE_BENEATH must be last, for sticky_orb"); This broke the GCC builds it seems. GCC doesn't think that it can compute this expression at compile time. From https://ci.freebsd.org/job/FreeBSD-main-amd64-gcc14_build/1022/console: 10:32:02 /workspace/src/sys/kern/kern_descrip.c: In function 'open_to_fde_flags': 10:32:02 /workspace/src/sys/kern/kern_descrip.c:560:79: error: expression in static = 10:32:02 assertion is not constant 10:32:02 560 | _Static_assert(open_to_fde_flags_s[nitems(open_to_fde_flags= 10:32:02 _s) - 1].f =3D=3D -- John Baldwin