From 87a6be8bc3404abea2af788c46cf450dc8bb6204 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 9 Nov 2022 20:09:17 +0200 Subject: silence ubsan and docs warnings --- common/bits.c | 4 ++++ common/dispatch.c | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/common/bits.c b/common/bits.c index 5691617..d92fd29 100644 --- a/common/bits.c +++ b/common/bits.c @@ -44,6 +44,10 @@ __weak int ffs(int v) if (v == 0) return 0; + /* silence ubsan warning */ + if (v == INT_MIN) + return 32; + int c = 32; v &= -v; diff --git a/common/dispatch.c b/common/dispatch.c index 1325d62..7fc13cf 100644 --- a/common/dispatch.c +++ b/common/dispatch.c @@ -1,6 +1,29 @@ #include #include +/** + * @file dispatch.c + * + * Interface between assembly and C for dispatching syscalls/IPIs. + * In apos, IPIs are a higher level concept and is not expected to be handled by + * the underlying architecture. Instead, we only require that there is some way + * to trigger an interrupt in some other core, and check if the interrupt was an + * IPI or syscall in C. + */ + +/** + * Syscall/IPI handler. + * If a syscall was triggered, parameters have the meaning they are given. + * Otherwise, they are meaningless and unused. + * + * @param a Syscall number. + * @param b Argument 0. + * @param c Argument 1. + * @param d Argument 2. + * @param e Argument 3. + * @param f Argument 4. + * @return Return value of taken action. + */ struct sys_ret dispatch(sys_arg_t a, sys_arg_t b, sys_arg_t c, sys_arg_t d, sys_arg_t e, sys_arg_t f) { -- cgit v1.3