1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
// IBM_PROLOG_BEGIN_TAG
// This is an automatically generated prolog.
//
// $Source: src/include/kernel/syscalls.H $
//
// IBM CONFIDENTIAL
//
// COPYRIGHT International Business Machines Corp. 2010 - 2011
//
// p1
//
// Object Code Only (OCO) source materials
// Licensed Internal Code Source Materials
// IBM HostBoot Licensed Internal Code
//
// The source code for this program is not published or other-
// wise divested of its trade secrets, irrespective of what has
// been deposited with the U.S. Copyright Office.
//
// Origin: 30
//
// IBM_PROLOG_END
/** @file syscalls.H
* @brief Defines all the system call IDs to be shared between the kernel and
* the system libc.
*/
#ifndef __KERNEL_SYSCALLS_H
#define __KERNEL_SYSCALLS_H
namespace Systemcalls
{
/** @enum SysCalls
* @brief List of normal system calls and their IDs.
*
* These are passed by userspace code via r3 when the sc instruction is
* executed. The kernel performs a case statement to switch to the
* appropriate system call handler.
*/
enum SysCalls
{
/** task_yield() */
TASK_YIELD = 0,
/** task_create() */
TASK_START,
/** task_end() */
TASK_END,
/** msgq_create() */
MSGQ_CREATE,
/** msgq_destroy() */
MSGQ_DESTROY,
/** VFS internal */
MSGQ_REGISTER_ROOT,
/** VFS internal */
MSGQ_RESOLVE_ROOT,
/** msg_send() */
MSG_SEND,
/** msg_sendrecv() */
MSG_SENDRECV,
/** msg_respond() */
MSG_RESPOND,
/** msg_wait() */
MSG_WAIT,
/** mmio_map() */
MMIO_MAP,
/** mmio_unmap() */
MMIO_UNMAP,
/** dev_map() */
DEV_MAP,
/** dev_unmap() */
DEV_UNMAP,
/** nanosleep() */
TIME_NANOSLEEP,
/** futex_wait() */
FUTEX_WAIT,
/** futex_wake() */
FUTEX_WAKE,
/** shutdown() */
MISC_SHUTDOWN,
/** cpu_core_type() */
MISC_CPUCORETYPE,
/** cpu_dd_level() */
MISC_CPUDDLEVEL,
/** mm_alloc_block() */
MM_ALLOC_BLOCK,
SYSCALL_MAX
};
/** @enum SysCalls_FastPath
* @brief List of fast-path system calls and their IDs.
*
* @note If any of these change, their handling in start.S must also be
* updated. The ASM code relies on these values.
*/
enum SysCalls_FastPath
{
/** mmio_hmer_read() */
MMIO_HMER_READ = 0x0800,
/** mmio_hmer_write() */
MMIO_HMER_WRITE = 0x0801,
/** mmio_scratch_read() */
MMIO_SCRATCH_READ = 0x0802,
/** mmio_scratch_write() */
MMIO_SCRATCH_WRITE = 0x0803,
SYSCALL_FASTPATH_MAX
};
};
#endif
|