import "objects/object.def"

# A ``process`` object represents a process running on the system, and allows
# control over the threads, handles, and virtual memory space of that process.

object process : object {
    uid 0c69ee0b7502ba31

    capabilities [
        kill
        create_thread
    ]

    # Create a new empty process
    method create [constructor] {
        param name string
    }

    # 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 int64    # 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
    }
}
