[kernel] Add "noreturn" syscall option

The new "noreturn" option tag on syscall methods causes those methods to
be generated with [[noreturn]] / _Noreturn to avoid clang complaining
that other functions marked noreturn, like exit(), because it can't tell
that the syscall never returns.
This commit is contained in:
Justin C. Miller
2022-02-06 21:41:05 -08:00
parent 346c172b32
commit 68a6007fd9
3 changed files with 16 additions and 5 deletions

View File

@@ -39,7 +39,11 @@ for id, scope, method in syscalls.methods:
for type, suffix in param.type.c_names(param.options):
args.append(f"{type} {param.name}{suffix}")
cog.outl(f"""j6_status_t j6_{name} ({", ".join(args)});""")
attr = ""
if "noreturn" in method.options:
attr += "_Noreturn "
cog.outl(f"""{attr}j6_status_t j6_{name} ({", ".join(args)});""")
]]]*/
/// [[[end]]]