import "objects/object.def"

# Processes are a collection of handles and a virtual memory
# space inside which threads are run.

object process : object {
    uid 0c69ee0b7502ba31

    capabilities [
        kill
        create_thread
    ]

    # Create a new empty process
    method create [constructor]

    # Stop all threads and exit the given process
    method kill [destructor cap:kill]

    # Stop all threads and exit the current process
    method exit [static noreturn] {
        param result int32    # The result to retrun to the parent process
    }

    # Give the given process a handle that points to the same
    # object as the specified handle.
    method give_handle {
        param target ref object [handle]          # A handle in the caller process to send
    }
}
