seL4/libsel4/include/api/syscall.xml
Kent McLeod e1f6cf0ab0 Add 2 new benchmark utilization syscalls
- seL4_BenchmarkDumpAllThreadsUtilisation: Prints a JSON formatted
record of total and per-thread utilisation statistics about the system.
This currently includes a thread's total cycles scheduled, total number
of times scheduled, total cycles spent in the kernel and total number of
times entering the kernel and then totals of each for all threads on the
current core.
- seL4_BenchmarkResetAllThreadsUtilisation: Resets the current counts of
every user thread on the current core.

These syscalls are only available in a Debug build configuration as they
use a kernel debug list of all of the threads that exist for a given
node.

Signed-off-by: Kent McLeod <Kent.Mcleod@data61.csiro.au>
2020-07-15 15:15:27 +10:00

86 lines
3.5 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="defined CONFIG_PRINTING">
<syscall name="DebugPutChar" />
<syscall name="DebugDumpScheduler" />
</config>
<config condition="defined CONFIG_DEBUG_BUILD">
<syscall name="DebugHalt" />
<syscall name="DebugCapIdentify" />
<syscall name="DebugSnapshot" />
<syscall name="DebugNameThread"/>
</config>
<config condition="defined CONFIG_DEBUG_BUILD &amp;&amp; CONFIG_MAX_NUM_NODES > 1">
<syscall name="DebugSendIPI"/>
</config>
<config condition="defined CONFIG_DANGEROUS_CODE_INJECTION">
<syscall name="DebugRun"/>
</config>
<config condition="defined CONFIG_ENABLE_BENCHMARKS">
<syscall name="BenchmarkFlushCaches" />
<syscall name="BenchmarkResetLog" />
<syscall name="BenchmarkFinalizeLog" />
<syscall name="BenchmarkSetLogBuffer" />
<syscall name="BenchmarkNullSyscall" />
</config>
<config condition="defined CONFIG_BENCHMARK_TRACK_UTILISATION">
<syscall name="BenchmarkGetThreadUtilisation" />
<syscall name="BenchmarkResetThreadUtilisation" />
</config>
<config condition="defined CONFIG_DEBUG_BUILD &amp;&amp; defined CONFIG_BENCHMARK_TRACK_UTILISATION">
<syscall name="BenchmarkDumpAllThreadsUtilisation" />
<syscall name="BenchmarkResetAllThreadsUtilisation" />
</config>
<config condition="defined CONFIG_KERNEL_X86_DANGEROUS_MSR">
<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="defined CONFIG_VTX">
<syscall name="VMEnter"/>
</config>
<config condition="defined CONFIG_SET_TLS_BASE_SELF">
<syscall name="SetTLSBase"/>
</config>
</debug>
</syscalls>