From 34d83987c18df3e06db1528423841376072bb627 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Wed, 14 Feb 2024 11:19:41 -0500 Subject: kernel: Add __TRY_CALL() macro This commit adds a macro to make testing if weak functions are implemented, then running them, less messy. This allows you to do so in one line. Signed-off-by: Ian Moffett --- sys/include/sys/cdefs.h | 7 +++++++ sys/kern/init_main.c | 11 +++-------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'sys') diff --git a/sys/include/sys/cdefs.h b/sys/include/sys/cdefs.h index 59c81d4..da78510 100644 --- a/sys/include/sys/cdefs.h +++ b/sys/include/sys/cdefs.h @@ -154,6 +154,13 @@ #define __MODULE_NAME(name) \ __used static const char *__THIS_MODULE = name +/* + * Attempts to call a __weak function. Does nothing + * if routine not implemented. + */ +#define __TRY_CALL(routine, ...) \ + if (routine != NULL) routine(__VA_ARGS__) + #else /* diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index a5d7577..2666b5e 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -76,7 +76,7 @@ main(void) { struct cpu_info *ci; - pre_init(); + __TRY_CALL(pre_init); tty_init(); syslog_init(); PRINT_LOGO(); @@ -86,18 +86,13 @@ main(void) HYRA_BUILDBRANCH); acpi_init(); - - if (chips_init == NULL) { - chips_init(); - } + __TRY_CALL(chips_init); processor_init(); list_timers(); ci = this_cpu(); - if (ap_bootstrap != NULL) { - ap_bootstrap(ci); - } + __TRY_CALL(ap_bootstrap, ci); sched_init_processor(ci); __builtin_unreachable(); -- cgit v1.2.3