seL4/libsel4/include/api/syscall.xml
Julia Vassiliki 4ee903cf50 syscall xml: only define DebugSendIPI when SMP
The actual libsel4 wrappers and kernel code only ever exists
when CONFIG_ENABLE_SMP_SUPPORT exists, so there's no point
also defining the syscall code as well.

Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
2026-06-22 18:06:26 +10:00

106 lines
4 KiB
XML

<?xml version="1.0" ?>
<!--
Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
SPDX-License-Identifier: BSD-2-Clause
-->
<!-- Please see syscalls.xsd to see the format of this file -->
<syscalls>
<!-- official API syscalls -->
<api-master>
<config>
<syscall name="Call" />
<syscall name="ReplyRecv" />
<syscall name="Send" />
<syscall name="NBSend" />
<syscall name="Recv" />
<syscall name="Reply" />
<syscall name="Yield" />
<syscall name="NBRecv" />
</config>
</api-master>
<api-mcs>
<config>
<syscall name="Call" />
<syscall name="ReplyRecv" />
<syscall name="NBSendRecv" />
<syscall name="NBSendWait" />
<syscall name="Send" />
<syscall name="NBSend" />
<syscall name="Recv" />
<syscall name="NBRecv" />
<syscall name="Wait" />
<syscall name="NBWait" />
<syscall name="Yield" />
</config>
</api-mcs>
<!-- Syscalls on the unknown syscall path. These definitions will be wrapped in #if condition -->
<debug>
<config>
<condition><config var="CONFIG_PRINTING"/></condition>
<syscall name="DebugPutChar" />
<syscall name="DebugDumpScheduler" />
</config>
<config>
<condition><config var="CONFIG_DEBUG_BUILD"/></condition>
<syscall name="DebugHalt" />
<syscall name="DebugCapIdentify" />
<syscall name="DebugSnapshot" />
<syscall name="DebugNameThread"/>
</config>
<config>
<condition>
<and>
<config var="CONFIG_DEBUG_BUILD"/>
<config var="CONFIG_ENABLE_SMP_SUPPORT"/>
</and>
</condition>
<syscall name="DebugSendIPI"/>
</config>
<config>
<condition><config var="CONFIG_DANGEROUS_CODE_INJECTION"/></condition>
<syscall name="DebugRun"/>
</config>
<config>
<condition><config var="CONFIG_ENABLE_BENCHMARKS"/></condition>
<syscall name="BenchmarkFlushCaches" />
<syscall name="BenchmarkResetLog" />
<syscall name="BenchmarkFinalizeLog" />
<syscall name="BenchmarkSetLogBuffer" />
<syscall name="BenchmarkNullSyscall" />
</config>
<config>
<condition><config var="CONFIG_BENCHMARK_TRACK_UTILISATION"/></condition>
<syscall name="BenchmarkGetThreadUtilisation" />
<syscall name="BenchmarkResetThreadUtilisation" />
</config>
<config>
<condition>
<and>
<config var="CONFIG_DEBUG_BUILD"/>
<config var="CONFIG_BENCHMARK_TRACK_UTILISATION"/>
</and>
</condition>
<syscall name="BenchmarkDumpAllThreadsUtilisation" />
<syscall name="BenchmarkResetAllThreadsUtilisation" />
</config>
<config>
<condition><config var="CONFIG_KERNEL_X86_DANGEROUS_MSR"/></condition>
<syscall name="X86DangerousWRMSR"/>
<syscall name="X86DangerousRDMSR"/>
</config>
<!-- This is not a debug syscall, but it needs to not appear in the 'API' syscall list
so that the check of 'is this a valid syscall' can remain a simple range check.
Therefore we'll put this here and the arch code will handle it before
passing to handleUnknownSyscall -->
<config>
<condition><config var="CONFIG_VTX"/></condition>
<syscall name="VMEnter"/>
</config>
<config>
<condition><config var="CONFIG_SET_TLS_BASE_SELF"/></condition>
<syscall name="SetTLSBase"/>
</config>
</debug>
</syscalls>