Date: Fri, 13 Jun 2025 19:40:29 GMT From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 4e207e3849d4 - main - exterr: make SET_ERRORX() macros an expression evaluating to the errno Message-ID: <202506131940.55DJeTa1046740@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4e207e3849d47648ced17da16aad39355b99d9b2 commit 4e207e3849d47648ced17da16aad39355b99d9b2 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2025-06-13 17:32:50 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> 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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506131940.55DJeTa1046740>