Hi Andrew,
On 15/12/2023 18:14, Andrew Cooper wrote:
Since this TODO was written, BUILD_BUG_ON() has been moved out of xen/lib.h
into xen/macros.h, which has done all the hard work.
Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
---
CC: George Dunlap <george.dun...@citrix.com>
CC: Jan Beulich <jbeul...@suse.com>
CC: Stefano Stabellini <sstabell...@kernel.org>
CC: Wei Liu <w...@xen.org>
CC: Julien Grall <jul...@xen.org>
CC: Federico Serafini <federico.seraf...@bugseng.com>
---
xen/include/xen/bug.h | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/xen/include/xen/bug.h b/xen/include/xen/bug.h
index cb5138410ea7..8cca4486a477 100644
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -20,7 +20,8 @@
#define BUG_DEBUGGER_TRAP_FATAL(regs) 0
#endif
-#include <xen/lib.h>
+#include <xen/macros.h>
+#include <xen/types.h>
#ifndef BUG_FRAME_STRUCT
@@ -104,14 +105,11 @@ typedef void bug_fn_t(const struct cpu_user_regs *regs);
#ifndef run_in_exception_handler
-/*
- * TODO: untangle header dependences, break BUILD_BUG_ON() out of xen/lib.h,
- * and use a real static inline here to get proper type checking of fn().
- */
-#define run_in_exception_handler(fn) do { \
- (void)((fn) == (void (*)(struct cpu_user_regs *))NULL); \
- BUG_FRAME(BUGFRAME_run_fn, 0, fn, 0, NULL); \
-} while ( false )
+static void always_inline run_in_exception_handler(
+ void (*fn)(struct cpu_user_regs *regs))
Based on the other threads, shouldn't this be using bug_fn_t?
Also coding style NIT: I was under the impression we would format
prototype like that:
static void always_inline
run_in_exception_handler(void (*fn)(struct cpu_user_regs *regs))
Anyway, that comment would be moot if we were using bug_fn_t.
Cheers,
--
Julien Grall