From 1025a1c090dfcaa13bb25d1d1e2e2fa7009d63ca Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sat, 14 Jun 2025 16:53:33 +0300 Subject: [PATCH] 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 d3c2c7c92d0..15557c614f8 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);