The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0e1fcec72a0515749b5dc9b7baeca4d345b49c62
commit 0e1fcec72a0515749b5dc9b7baeca4d345b49c62 Author: Konstantin Belousov <[email protected]> AuthorDate: 2025-10-25 09:14:59 +0000 Commit: Konstantin Belousov <[email protected]> CommitDate: 2025-12-01 03:39:09 +0000 exterror(9): add two helpers (cherry picked from commit 069e2fb5506f8301cd9e2da1946c718bd268c50c) --- sys/kern/sys_generic.c | 19 +++++++++++++++++++ sys/sys/exterrvar.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 5606b36f772f..79628f1389e4 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -2339,3 +2339,22 @@ exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1, } return (eerror); } + +int +exterr_set_from(const struct kexterr *ke) +{ + struct thread *td; + + td = curthread; + if ((td->td_pflags2 & TDP2_UEXTERR) != 0) { + td->td_pflags2 |= TDP2_EXTERR; + td->td_kexterr = *ke; + } + return (td->td_kexterr.error); +} + +void +exterr_clear(struct kexterr *ke) +{ + memset(ke, 0, sizeof(*ke)); +} diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h index 5fce8ae7ffbe..1e07f6afb547 100644 --- a/sys/sys/exterrvar.h +++ b/sys/sys/exterrvar.h @@ -69,6 +69,8 @@ _EXTERROR_MACRO(__VA_ARGS__, _SET_ERROR2, _SET_ERROR1, \ _SET_ERROR0)(__VA_ARGS__) +void exterr_clear(struct kexterr *ke); +int exterr_set_from(const struct kexterr *ke); 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);
