# A ``thread`` object represents a thread of execution within a process running
# on the system. The actual thread does not need to be currently running to
# hold a handle to it.

object thread : object {
    uid 11f23e593d5761bd

    capabilities [
        kill
        join
    ]

    method create [constructor] {
        param process ref process [optional cap:create_thread]
        param stack_top address
        param entrypoint address
        param arg0 uint64
        param arg1 uint64
    }

    method kill [destructor cap:kill]

    method join [cap:join]

    method exit [static]

    method sleep [static] {
        param duration uint64
    }
}
