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