git: 1025a1c090df - main - exterr: convert SET_ERRORX() to pseudo-variadic EXTERROR()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 16 Jun 2025 15:12:29 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=1025a1c090dfcaa13bb25d1d1e2e2fa7009d63ca
commit 1025a1c090dfcaa13bb25d1d1e2e2fa7009d63ca
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-06-14 13:53:33 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-06-16 15:11:58 +0000
exterr: convert SET_ERRORX() to pseudo-variadic EXTERROR()
Stealed from the CTR() macro in sys/ktr.h.
Suggested by: jhb
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D50845
---
sys/sys/exterrvar.h | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/sys/sys/exterrvar.h b/sys/sys/exterrvar.h
index d3c2c7c92d06..15557c614f88 100644
--- a/sys/sys/exterrvar.h
+++ b/sys/sys/exterrvar.h
@@ -36,11 +36,17 @@
#define SET_ERROR_MSG(mmsg) NULL
#endif
-#define SET_ERROR2(eerror, mmsg, pp1, pp2) \
+#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)
+#define _SET_ERROR0(eerror, mmsg) _SET_ERROR2(eerror, mmsg, 0, 0)
+#define _SET_ERROR1(eerror, mmsg, pp1) _SET_ERROR2(eerror, mmsg, pp1, 0)
+
+#define _EXTERROR_MACRO(eerror, mmsg, _1, _2, NAME, ...) \
+ NAME
+#define EXTERROR(...) \
+ _EXTERROR_MACRO(__VA_ARGS__, _SET_ERROR2, _SET_ERROR1, \
+ _SET_ERROR0)(__VA_ARGS__)
int exterr_set(int eerror, int category, const char *mmsg, uintptr_t pp1,
uintptr_t pp2, int line);