36 lines
1.1 KiB
ReStructuredText
36 lines
1.1 KiB
ReStructuredText
.. zephyr:code-sample:: syscall_perf
|
|
:name: Syscall performance
|
|
|
|
Measure performance overhead of a system calls compared to direct function calls.
|
|
|
|
Syscall performances
|
|
====================
|
|
|
|
The goal of this sample application is to measure the performance loss when a
|
|
user thread has to go through a system call compared to a supervisor thread that
|
|
calls the function directly.
|
|
|
|
|
|
Overview
|
|
********
|
|
|
|
This application creates a supervisor and a user thread.
|
|
Then both threads call :c:func:`k_current_get()` which returns a reference to the
|
|
current thread. The user thread has to go through a system call.
|
|
|
|
Both threads are showing the number of core clock cycles and the number of
|
|
instructions executed while calling :c:func:`k_current_get()`.
|
|
|
|
|
|
Sample Output
|
|
*************
|
|
|
|
.. code-block:: console
|
|
|
|
User thread: 18012 cycles 748 instructions
|
|
Supervisor thread: 7 cycles 4 instructions
|
|
User thread: 20136 cycles 748 instructions
|
|
Supervisor thread: 7 cycles 4 instructions
|
|
User thread: 18014 cycles 748 instructions
|
|
Supervisor thread: 7 cycles 4 instructions
|