From nobody Fri Jun 13 19:40:29 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 4bJqW232Tkz511jP; Fri, 13 Jun 2025 19:40:30 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bJqW127Z2z45VS; Fri, 13 Jun 2025 19:40:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749843630; 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=ZbNWc/FC1uziSb4pxGq54IZzQd0dgaf6TtX+AJMzLnI=; b=iWoOrqKIHzgiFMMHVxT738Wnka0FrIatNK1XuUVQCQN6fK186PGOqjqh48ZiTcUQmBAU1Q y6Gh7sJCw3ho/0EtTbri5KMyam+qi7ITSBMTdYc/l/nfLwt8FOdBfReEEadSFL94+KU2PI kvk29GKiFKdRofAqTNncoeX4XzEjrqncXcmLQLboWdDYzx0iRC0LwMYtVZJxnF1lvzKUEl 8IoSonWozOvuAUmWrd1dP4IgM0pwzd58YD6DrZI0dzPwiSOpxhcRAP+b64+tCHCgOPUmfX Tw0e8sj6eOTYWCZhszSVRlCGd6ceayEWNbBerCkGMvxIVob/FytqRk3Iy1R+qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749843629; 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=ZbNWc/FC1uziSb4pxGq54IZzQd0dgaf6TtX+AJMzLnI=; b=XXDyc/7IJqrm5e4QeFNvxcQOBZwwzAc6rddRnZmwoGbgUuO7WIhLcDiNqGacjA7JlDsp8T r+LZ3fP6KfylLd+w5iHzi3HWiUYX23cXrEDY3BpWYxsrt4b7CxL7jtYKWNAcI45WKD3VgW l7cXJeU9F8PekZlse9uLetuwc8QKGZwv/FWfID+qTZe9vEdnNSCgMWqrMKZ0ilMCSyDwZ6 jVU6/UKXzH2h7RhulmhT7UUtH3qpkgB9pWkHe3XGpQmeRhnQVGMlqXjRIHTa75hGaAsFHZ wTk2CQn5OPrsQR7wpP3RoLcCqwqX/SsLSHwE7GogB8RMG46uZy/nOeSkFlWxLw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749843629; a=rsa-sha256; cv=none; b=uNjNyGJ8tiQFMIHMcdli+haG0wjvGkCDbNFDkxS6v0rVPjFgeqR/e/T5O19ET4AUdS87JH T41W9fwkSYBg7hvCbaq43z8B4oJHjTMI03JFGoWa8Qit9PyxLY2NwxFiR+nKi7FNmhlF2v JTqtW1xNtyl+w3mH3WR0pbGOmGxprWLS9BstK5n8nz8FtM34c85Pf7LGWfLXfNoEoJardE p4yfVwRP7yRMZwmFctfhBVrQaJE8EXTJ1ABLGBsfaOFQgLnSokHX1IVsSSUCRs6iFIjkbI aG7hWvHhg7UeDGt0TlDT4DflqAwdH8Zn0P8DZ5wxt+A4KIaSwfdRlUQ8DVcEaA== 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 4bJqW11gfSz19NZ; Fri, 13 Jun 2025 19:40:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 55DJeTCW046743; Fri, 13 Jun 2025 19:40:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55DJeTa1046740; Fri, 13 Jun 2025 19:40:29 GMT (envelope-from git) Date: Fri, 13 Jun 2025 19:40:29 GMT Message-Id: <202506131940.55DJeTa1046740@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 4e207e3849d4 - main - exterr: make SET_ERRORX() macros an expression evaluating to the errno 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 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4e207e3849d47648ced17da16aad39355b99d9b2 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4e207e3849d47648ced17da16aad39355b99d9b2 commit 4e207e3849d47648ced17da16aad39355b99d9b2 Author: Konstantin Belousov AuthorDate: 2025-06-13 17:32:50 +0000 Commit: Konstantin Belousov CommitDate: 2025-06-13 19:39:55 +0000 exterr: make SET_ERRORX() macros an expression evaluating to the errno And move the actual td_kexterr fill code into the function, saving some text. Suggested and reviewed by: markj Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D50836 --- sys/kern/sys_generic.c | 20 ++++++++++++++++++++ sys/sys/exterrvar.h | 22 +++++++--------------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index ec61d0bdc541..d31ff3b939cc 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -2281,3 +2281,23 @@ sys_exterrctl(struct thread *td, struct exterrctl_args *uap) return (EINVAL); } } + +int +exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1, + uintptr_t pp2, int line) +{ + struct thread *td; + + td = curthread; + if ((td->td_pflags2 & TDP2_UEXTERR) != 0) { + td->td_pflags2 |= TDP2_EXTERR; + td->td_kexterr.error = eerror; + td->td_kexterr.cat = category; + td->td_kexterr.msg = mmsg; + td->td_kexterr.p1 = pp1; + td->td_kexterr.p2 = pp2; + td->td_kexterr.src_line = line; + ktrexterr(td); + } + return (eerror); +} diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h index 4b168446e23b..d3c2c7c92d06 100644 --- a/sys/sys/exterrvar.h +++ b/sys/sys/exterrvar.h @@ -31,27 +31,19 @@ #endif #ifdef BLOAT_KERNEL_WITH_EXTERR -#define SET_ERROR_MSG(mmsg) _Td->td_kexterr.msg = mmsg +#define SET_ERROR_MSG(mmsg) (mmsg) #else -#define SET_ERROR_MSG(mmsg) _Td->td_kexterr.msg = NULL +#define SET_ERROR_MSG(mmsg) NULL #endif -#define SET_ERROR2(eerror, mmsg, pp1, pp2) do { \ - struct thread *_Td = curthread; \ - if ((_Td->td_pflags2 & TDP2_UEXTERR) != 0) { \ - _Td->td_pflags2 |= TDP2_EXTERR; \ - _Td->td_kexterr.error = eerror; \ - _Td->td_kexterr.cat = EXTERR_CATEGORY; \ - SET_ERROR_MSG(mmsg); \ - _Td->td_kexterr.p1 = (uintptr_t)pp1; \ - _Td->td_kexterr.p2 = (uintptr_t)pp2; \ - _Td->td_kexterr.src_line = __LINE__; \ - ktrexterr(_Td); \ - } \ -} while (0) +#define SET_ERROR2(eerror, mmsg, pp1, pp2) \ + exterr_set(eerror, EXTERR_CATEGORY, SET_ERROR_MSG(mmsg), \ + (uintptr_t)(pp1), (uintptr_t)(pp2), __LINE__) #define SET_ERROR0(eerror, mmsg) SET_ERROR2(eerror, mmsg, 0, 0) #define SET_ERROR1(eerror, mmsg, pp1) SET_ERROR2(eerror, mmsg, pp1, 0) +int exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1, + uintptr_t pp2, int line); int exterr_to_ue(struct thread *td, struct uexterror *ue); void ktrexterr(struct thread *td);