Kernel contains mechanism of using kernel services.
Portable parts of system call machinery.
This mechanism (commonly known as system calls, or syscalls) can be used to call system services only from userspace code running in thread context. It is not possible to call these services from within ISR context.
enum | eSysCalls { SYSCALL_GET_TID = 0 , SYSCALL_SCHED_YIELD , SYSCALL_THREAD_CREATE , SYSCALL_MUTEX_INIT , SYSCALL_MUTEX_DESTROY , SYSCALL_MUTEX_UNLOCK , SYSCALL_MUTEX_TRYLOCK , SYSCALL_RPC_CALL , SYSCALL_RPC_RETURN , SYSCALL_THREAD_JOIN , SYSCALL_THREAD_EXIT , SYSCALL_SETITIMER , SYSCALL_USLEEP , SYSCALL_SIGNAL , SYSCALL_KILL , SYSCALL_SETPRIORITY , SYSCALL_RESET , _SYSCALL_COUNT } |
List of known syscall IDs. More... | |
typedef int(* | Syscall_Handler_t) (int, int, int, int) |
#define | __SYSCALL __attribute__((naked)) __attribute__((noinline)) |
Mark function as syscall entrypoint in userspace. | |
#define | ___SVC(no) |
#define | __SVC(no) ___SVC(no) |
Perform syscall. | |
#define ___SVC | ( | no | ) |
#define __SVC | ( | no | ) | ___SVC(no) |
Perform syscall.
no | number of syscall. |
#define __SYSCALL __attribute__((naked)) __attribute__((noinline)) |
Mark function as syscall entrypoint in userspace.
This gives the function some common attributes. Currently syscall entrypoint are short functions which never get inlined and don't construct stack frame. This is the most efficient method of calling syscalls right now.
typedef int(* Syscall_Handler_t) (int, int, int, int) |
enum eSysCalls |
List of known syscall IDs.
These syscall IDs are known and can be used to call services.