mirror of
https://github.com/justinian/jsix.git
synced 2025-12-09 16:04:32 -08:00
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.
35 lines
1.1 KiB
Modula-2
35 lines
1.1 KiB
Modula-2
import "objects/kobject.def"
|
|
|
|
# Processes are a collection of handles and a virtual memory
|
|
# space inside which threads are run.
|
|
|
|
object process : kobject {
|
|
uid 0c69ee0b7502ba31
|
|
|
|
# Create a new empty process
|
|
method create [constructor]
|
|
|
|
# Stop all threads and exit the given process
|
|
method kill [destructor]
|
|
|
|
# Stop all threads and exit the current process
|
|
method exit [static] {
|
|
param result int32 # The result to retrun to the parent process
|
|
}
|
|
|
|
# Start the given process running. Note that the entrypoint
|
|
# address must be specified in the address space of the new
|
|
# process.
|
|
method start {
|
|
param entrypoint address # The address of the main thread entrypoint
|
|
param handles object kobject [list] # A list of parent handles to send to the child process
|
|
}
|
|
|
|
# Give the given process a handle that points to the same
|
|
# object as the specified handle.
|
|
method give_handle {
|
|
param sender object kobject # A handle in the caller process to send
|
|
param receiver object kobject [out optional] # The handle as the recipient will see it
|
|
}
|
|
}
|