[kernel] Add capabilities to handles
This change finally adds capabilities to handles. Included changes: - j6_handle_t is now again 64 bits, with the highest 8 bits being a type code, and the next highest 24 bits being the capability mask, so that programs can check type/caps without calling the kernel. - The definitions grammar now includes a `capabilities [ ]` section on objects, to list what capabilities are relevant. - j6/caps.h is auto-generated from object capability lists - init_libj6 again sets __handle_self and __handle_sys, this is a bit of a hack. - A new syscall, j6_handle_list, will return the list of existing handles owned by the calling process. - syscall_verify.cpp.cog now actually checks that the needed capabilities exist on handles before allowing the call.
This commit is contained in:
@@ -5,6 +5,7 @@ j6 = module("j6",
|
||||
includes = [ "include" ],
|
||||
sources = [
|
||||
"init.cpp",
|
||||
"include/j6/caps.h.cog",
|
||||
"include/j6/syscalls.h.cog",
|
||||
"include/j6/sysconf.h.cog",
|
||||
"syscalls.s.cog",
|
||||
@@ -18,6 +19,7 @@ sysconf = join(source_root, "definitions/sysconf.yaml")
|
||||
definitions = glob('definitions/**/*.def', recursive=True)
|
||||
|
||||
j6.add_depends([
|
||||
"include/j6/caps.h.cog",
|
||||
"include/j6/syscalls.h.cog",
|
||||
"syscalls.s.cog",
|
||||
], definitions)
|
||||
|
||||
Reference in New Issue
Block a user