seL4/libsel4/include/interfaces/sel4.xml
Adrian Danis bddd804a6e x86: IOAPIC/MSI syscalls
Restructure the x86 interrupt handling to allow for a more flexible
method of using IOAPIC and MSI interrupts. The essence of this change
is to allow for the user to pick, for both IOAPIC and MSIs, which
CPU vector to use. Additionally there is future support, in the API,
for seL4 to eventually protect MSI interrupts with the vt-d interrupt
routing tables.

API behaviour for legacy systems using the PIC is preserved

Part of SELFOUR-281
2016-02-02 15:58:18 +11:00

159 lines
6.8 KiB
XML

<?xml version="1.0" ?>
<!--
Copyright 2014, NICTA
This software may be distributed and modified according to the terms of
the BSD 2-Clause license. Note that NO WARRANTY is provided.
See "LICENSE_BSD2.txt" for details.
@TAG(NICTA_BSD)
-->
<api>
<interface name="seL4_Untyped">
<method id="UntypedRetype" name="Retype">
<param dir="in" name="type" type="seL4_Word"/>
<param dir="in" name="size_bits" type="seL4_Word"/>
<param dir="in" name="root" type="seL4_CNode"/>
<param dir="in" name="node_index" type="seL4_Word"/>
<param dir="in" name="node_depth" type="seL4_Word"/>
<param dir="in" name="node_offset" type="seL4_Word"/>
<param dir="in" name="num_objects" type="seL4_Word"/>
</method>
</interface>
<interface name="seL4_TCB">
<method id="TCBReadRegisters" name="ReadRegisters">
<param dir="in" name="suspend_source" type="seL4_Bool"/>
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
<param dir="in" name="count" type="seL4_Word"/>
<param dir="out" name="regs" type="seL4_UserContext"/>
</method>
<method id="TCBWriteRegisters" name="WriteRegisters">
<param dir="in" name="resume_target" type="seL4_Bool"/>
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
<param dir="in" name="count" type="seL4_Word"/>
<param dir="in" name="regs" type="seL4_UserContext"/>
</method>
<method id="TCBCopyRegisters" name="CopyRegisters">
<param dir="in" name="source" type="seL4_TCB"/>
<param dir="in" name="suspend_source" type="seL4_Bool"/>
<param dir="in" name="resume_target" type="seL4_Bool"/>
<param dir="in" name="transfer_frame" type="seL4_Bool"/>
<param dir="in" name="transfer_integer" type="seL4_Bool"/>
<param dir="in" name="arch_flags" type="seL4_Uint8"/>
</method>
<method id="TCBConfigure" name="Configure">
<param dir="in" name="fault_ep" type="seL4_Word"/>
<param dir="in" name="priority" type="seL4_Uint8"/>
<param dir="in" name="cspace_root" type="seL4_CNode"/>
<param dir="in" name="cspace_root_data" type="seL4_CapData_t"/>
<param dir="in" name="vspace_root" type="seL4_CNode"/>
<param dir="in" name="vspace_root_data" type="seL4_CapData_t"/>
<param dir="in" name="buffer" type="seL4_Word"/>
<param dir="in" name="bufferFrame" type="seL4_CPtr"/>
</method>
<method id="TCBSetPriority" name="SetPriority">
<param dir="in" name="priority" type="seL4_Uint8"/>
</method>
<method id="TCBSetIPCBuffer" name="SetIPCBuffer">
<param dir="in" name="buffer" type="seL4_Word"/>
<param dir="in" name="bufferFrame" type="seL4_CPtr"/>
</method>
<method id="TCBSetSpace" name="SetSpace">
<param dir="in" name="fault_ep" type="seL4_Word"/>
<param dir="in" name="cspace_root" type="seL4_CNode"/>
<param dir="in" name="cspace_root_data" type="seL4_CapData_t"/>
<param dir="in" name="vspace_root" type="seL4_CNode"/>
<param dir="in" name="vspace_root_data" type="seL4_CapData_t"/>
</method>
<method id="TCBSuspend" name="Suspend"/>
<method id="TCBResume" name="Resume"/>
<method id="TCBBindNotification" name="BindNotification">
<param dir="in" name="notification" type="seL4_CPtr"/>
</method>
<method id="TCBUnbindNotification" name="UnbindNotification">
</method>
</interface>
<interface name="seL4_CNode">
<method id="CNodeRevoke" name="Revoke">
<param dir="in" name="index" type="seL4_Word"/>
<param dir="in" name="depth" type="seL4_Uint8"/>
</method>
<method id="CNodeDelete" name="Delete">
<param dir="in" name="index" type="seL4_Word"/>
<param dir="in" name="depth" type="seL4_Uint8"/>
</method>
<method id="CNodeRecycle" name="Recycle">
<param dir="in" name="index" type="seL4_Word"/>
<param dir="in" name="depth" type="seL4_Uint8"/>
</method>
<method id="CNodeCopy" name="Copy">
<param dir="in" name="dest_index" type="seL4_Word"/>
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
<param dir="in" name="src_root" type="seL4_CNode"/>
<param dir="in" name="src_index" type="seL4_Word"/>
<param dir="in" name="src_depth" type="seL4_Uint8"/>
<param dir="in" name="rights" type="seL4_CapRights"/>
</method>
<method id="CNodeMint" name="Mint">
<param dir="in" name="dest_index" type="seL4_Word"/>
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
<param dir="in" name="src_root" type="seL4_CNode"/>
<param dir="in" name="src_index" type="seL4_Word"/>
<param dir="in" name="src_depth" type="seL4_Uint8"/>
<param dir="in" name="rights" type="seL4_CapRights"/>
<param dir="in" name="badge" type="seL4_CapData_t"/>
</method>
<method id="CNodeMove" name="Move">
<param dir="in" name="dest_index" type="seL4_Word"/>
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
<param dir="in" name="src_root" type="seL4_CNode"/>
<param dir="in" name="src_index" type="seL4_Word"/>
<param dir="in" name="src_depth" type="seL4_Uint8"/>
</method>
<method id="CNodeMutate" name="Mutate">
<param dir="in" name="dest_index" type="seL4_Word"/>
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
<param dir="in" name="src_root" type="seL4_CNode"/>
<param dir="in" name="src_index" type="seL4_Word"/>
<param dir="in" name="src_depth" type="seL4_Uint8"/>
<param dir="in" name="badge" type="seL4_CapData_t"/>
</method>
<method id="CNodeRotate" name="Rotate">
<param dir="in" name="dest_index" type="seL4_Word"/>
<param dir="in" name="dest_depth" type="seL4_Uint8"/>
<param dir="in" name="dest_badge" type="seL4_CapData_t"/>
<param dir="in" name="pivot_root" type="seL4_CNode"/>
<param dir="in" name="pivot_index" type="seL4_Word"/>
<param dir="in" name="pivot_depth" type="seL4_Uint8"/>
<param dir="in" name="pivot_badge" type="seL4_CapData_t"/>
<param dir="in" name="src_root" type="seL4_CNode"/>
<param dir="in" name="src_index" type="seL4_Word"/>
<param dir="in" name="src_depth" type="seL4_Uint8"/>
</method>
<method id="CNodeSaveCaller" name="SaveCaller">
<param dir="in" name="index" type="seL4_Word"/>
<param dir="in" name="depth" type="seL4_Uint8"/>
</method>
</interface>
<interface name="seL4_IRQControl">
<method id="IRQIssueIRQHandler" name="Get">
<param dir="in" name="irq" type="int"/>
<param dir="in" name="root" type="seL4_CNode"/>
<param dir="in" name="index" type="seL4_Word"/>
<param dir="in" name="depth" type="seL4_Uint8"/>
</method>
</interface>
<interface name="seL4_IRQHandler">
<method id="IRQAckIRQ" name="Ack"/>
<method id="IRQSetIRQHandler" name="SetNotification">
<param dir="in" name="notification" type="seL4_CPtr"/>
</method>
<method id="IRQClearIRQHandler" name="Clear"/>
</interface>
<interface name="seL4_DomainSet">
<method id="DomainSetSet" name="Set">
<param dir="in" name="domain" type="seL4_Uint8"/>
<param dir="in" name="thread" type="seL4_TCB"/>
</method>
</interface>
</api>