mirror of
https://github.com/justinian/jsix.git
synced 2025-12-09 16:04:32 -08:00
[kernel] Add automatic verification to syscalls
Since we have a DSL for specifying syscalls, we can create a verificaton method for each syscall that can cover most argument (and eventually capability) verification instead of doing it piecemeal in each syscall implementation, which can be more error-prone. Now a new _syscall_verify_* function exists for every syscall, which calls the real implementation. The syscall table for the syscall handler now maps to these verify functions. Other changes: - Updated the definition grammar to allow options to have a "key:value" style, to eventually support capabilities. - Added an "optional" option for parameters that says a syscall will accept a null value. - Some bonnibel fixes, as definition file changes weren't always properly causing updates in the build dep graph. - The syscall implementation function signatures are no longer exposed in syscall.h. Also, the unused syscall enum has been removed.
This commit is contained in:
@@ -48,6 +48,7 @@ kernel = module("kernel",
|
||||
"syscall.cpp.cog",
|
||||
"syscall.h.cog",
|
||||
"syscall.s",
|
||||
"syscall_verify.cpp.cog",
|
||||
"syscalls.inc.cog",
|
||||
"syscalls/channel.cpp",
|
||||
"syscalls/endpoint.cpp",
|
||||
@@ -68,10 +69,15 @@ from os.path import join
|
||||
|
||||
layout = join(source_root, "definitions/memory_layout.yaml")
|
||||
sysconf = join(source_root, "definitions/sysconf.yaml")
|
||||
definitions = glob('definitions/**/*.def', recursive=True)
|
||||
definitions = glob(join(source_root, 'definitions/**/*.def'), recursive=True)
|
||||
|
||||
kernel.add_depends(["memory.h.cog"], [layout])
|
||||
kernel.add_depends(["sysconf.h.cog"], [sysconf])
|
||||
kernel.add_depends(["syscall.cpp.cog", "syscall.h.cog", "syscalls.inc.cog"], definitions)
|
||||
kernel.add_depends([
|
||||
"syscall.cpp.cog",
|
||||
"syscall.h.cog",
|
||||
"syscalls.inc.cog",
|
||||
"syscall_verify.cpp.cog",
|
||||
], definitions)
|
||||
|
||||
kernel.variables['ldflags'] = ["${ldflags}", "-T", "${source_root}/src/kernel/kernel.ld"]
|
||||
|
||||
Reference in New Issue
Block a user