mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[kernel] Add handle_clone syscall
Added the handle_clone syscall which allows for cloning a handle with a subset of the original handle's capabilities. Related changes: - srv.init now calls handle_clone on its system handle, and load_program was changed to allow this second system handle to be passed to loaded programs instead. However, as drv.uart is still a driver AND a log reader, this new handle is not actually passed yet. - The definition parser was using a set for the cap list, which meant the order (and thus values) of caps was not static. - Some code in objects/handle.h was made more explicit about what bits meant what.
This commit is contained in:
@@ -34,4 +34,12 @@ interface syscalls [syscall] {
|
||||
function handle_list {
|
||||
param handles object kobject [list inout optional] # A list of handles to be filled
|
||||
}
|
||||
|
||||
# Create a clone of an existing handle, possibly with
|
||||
# some capabilities masked out.
|
||||
function handle_clone {
|
||||
param handle object kobject [handle] # The handle to clone
|
||||
param clone object kobject [out] # The new handle
|
||||
param mask uint32 # The capability bitmask
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user