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.
This application creates a supervisor and a user thread. Then both threads call 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 k_current_get().
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