Retype an untyped object Given a capability, , to an untyped object, creates of the requested type. Creates capabilities to the new objects starting at in the CNode specified by , , and . For variable-sized kernel objects, the argument is used to determine the size of objects to create. The relationship between and object size depends on the type of object being created. See for more information about object sizes. See for more information about how untyped memory is retyped. See for more information about the placement of capabilities to created objects. Read a thread's registers into the first fields of a given seL4_UserContext See Set a thread's registers to the first fields of a given seL4_UserContext See Copy the registers from one thread to another In the context of this function, frame registers are those that are read, modified or preserved by a system call and integer registers are those that are not. Refer to the seL4 userland library source for specifics. Set the parameters of a TCB See Set the parameters of a TCB See Change a thread's priority See Change a thread's maximum controlled priority See Change a thread's priority and maximum controlled priority. See Change a thread's priority, maximum controlled priority, scheduling context and fault handler. See Set a thread's timeout endpoint. Timeout exception messages will be delivered to this endpoint if it is not a null capability. Set a thread's IPC buffer See Sections and Set the fault endpoint, CSpace and VSpace of a thread See Set the fault endpoint, CSpace and VSpace of a thread See Suspend a thread See Resume a thread See Binds a notification object to a See Unbinds any notification object from a See Change a thread's current CPU in multicore machine See Set or modify a thread's breakpoints or watchpoints. Calls to this function overwrite previous configurations for the target breakpoint. Do not use this with seL4_SingleStep: the API will reject the call and return an error. Instead, use seL4_TCB_ConfigureSingleStepping to configure single-stepping. See Read a breakpoint or watchpoint's current configuration. See A : Struct that contains , an seL4 API error value, , the virtual address at which the breakpoint will currently be triggered; , the type of operation which will currently trigger the breakpoint, whether instruction execution, or data access; , integer value for the span-size of the breakpoint. Usually a power of two (1, 2, 4, etc.); , the access direction that will currently trigger the breakpoint, whether read, write, or both and , which indicates whether or not the breakpoint will currently be triggered if the match conditions are met. Disables a hardware breakpoint or watchpoint. The caller should assume that the underlying configuration of the hardware registers has also been cleared. Do not use this to clear single-stepping: the API will reject the call and return an error. Instead, use seL4_TCB_ConfigureSingleStepping to disable single-stepping. See Set or modify single stepping options for the target TCB. Subsequent calls to this function overwrite previous configuration. Depending on your processor architecture, this may or may not require the consumption of a hardware register. See Sections and A : Struct that contains , an seL4 API error value, , a boolean which indicates whether or not the breakpoint ID that was passed to the function, was consumed in the setup of the single-stepping functionality: if this is , the caller should not attempt to re-use until it has disabled the single-stepping functionality via a subsequent call to seL4_TCB_ConfigureSingleStepping with an argument of 0. Set the TLS base of the target TCB. This intended for use on architectures where the register used for TLS can only be written to in privilidged mode Delete all child capabilities of a capability See . Delete a capability See . The cancel badged sends method is intend to allow for the reuse of badges by an authority. When used with a badged endpoint capability it will cancel any outstanding send operations for that endpoint and badge. This operation has no effect on un-badged or other objects. See . Copy a capability, setting its access rights whilst doing so See . The rights inherited by the new capability.Possible values for this type are given in . Copy a capability, setting its access rights and badge whilst doing so See . The rights inherited by the new capability.Possible values for this type are given in . Move a capability See . Move a capability, setting its badge in the process See . Given 3 capability slots - a destination, pivot and source - move the capability in the pivot slot to the destination slot and the capability in the source slot to the pivot slot See . Save the reply capability from the last time the thread was called in the given CSpace so that it can be invoked later See . Create an IRQ handler capability See . Acknowledge the receipt of an interrupt and re-enable it See . Set the notification which the kernel will signal on interrupts controlled by the supplied IRQ handler capability See . Clear the handler capability from the IRQ slot See . Change the domain of a thread. See . Set the parameters of a scheduling context by invoking the scheduling control capability. If the scheduling context is bound to a currently running thread, the parameters will take effect immediately: that is the current budget will be increased or reduced by the difference between the new and previous budget and the replenishment time will be updated according to any difference in the period. This can result in active threads being post-poned or released depending on the nature of the parameter change and the state of the thread. Additionally, if the scheduling context was previously empty (no budget) but bound to a runnable thread, this can result in a thread running for the first time since it now has access to CPU time. This call will return seL4 Invalid Argument if the parameters are too small (smaller than the kernel WCET for this platform) or too large (will overflow the timer). See Bind an object to a scheduling context. The object can be a notification object or a thread. If the object is a thread and the thread is in a runnable state and the scheduling context has available budget, this will start the thread running. If the object is a notification, when passive threads wait on the notification object and a signal arrives, the passive thread will receive the scheduling context and possess it until it waits on the notification object again. This operation will fail if the scheduling context is already bound to a thread or notification object. See Unbind any objects (threads or notification objects) from a scheduling context. This will render the bound thread passive, see Section 6.1.5. See Unbind an object from a scheduling context. The object can be either a thread or a notification. If the thread being unbound is the thread that is bound to this scheduling context, this will render the thread passive. However if the thread being unbound received the scheduling context via scheduling context donation over IPC, the scheduling context will be returned to the thread that it was originally bound to. If the object is a notification and it is bound to the scheduling context, unbind it. See Return the amount of time used by this scheduling context since this function was last called or a timeout exception triggered. See If a thread is currently runnable and running on this scheduling context and the scheduling context has available budget, place it at the head of the scheduling queue. If the caller is at an equal priority to the thread this will result in the thread being scheduled. If the caller is at a higher priority the thread will not run until the threads priority is the highest priority in the system. The caller must have a maximum control priority greater than or equal to the threads priority. TODO