1 /* Function prototypes for the system library. The prototypes in this file
2 * are undefined to NULL if the kernel call is not enabled in config.h.
3 * The implementation is contained in src/kernel/system/.
5 * The system library allows to access system services by doing a kernel call.
6 * System calls are transformed into request messages to the SYS task that is
7 * responsible for handling the call. By convention, sys_call() is transformed
8 * into a message with type SYS_CALL that is handled in a function do_call().
11 * Mar 01, 2010 SYS_CLEAR and SYS_EXIT split (Cristiano Giuffrida)
12 * Jul 30, 2005 created SYS_INT86 to support BIOS driver (Philip Homburg)
13 * Jul 13, 2005 created SYS_PRIVCTL to manage services (Jorrit N. Herder)
14 * Jul 09, 2005 updated SYS_KILL to signal services (Jorrit N. Herder)
15 * Jun 21, 2005 created SYS_NICE for nice(2) kernel call (Ben J. Gras)
16 * Jun 21, 2005 created SYS_MEMSET to speed up exec(2) (Ben J. Gras)
17 * Jan 20, 2005 updated SYS_COPY for virtual_copy() (Jorrit N. Herder)
18 * Oct 24, 2004 created SYS_GETKSIG to support PM (Jorrit N. Herder)
19 * Oct 10, 2004 created handler for unused calls (Jorrit N. Herder)
20 * Sep 09, 2004 updated SYS_EXIT to let services exit (Jorrit N. Herder)
21 * Aug 25, 2004 rewrote SYS_SETALARM to clean up code (Jorrit N. Herder)
22 * Jul 13, 2004 created SYS_SEGCTL to support drivers (Jorrit N. Herder)
23 * May 24, 2004 created SYS_SDEVIO to support drivers (Jorrit N. Herder)
24 * May 24, 2004 created SYS_GETINFO to retrieve info (Jorrit N. Herder)
25 * Apr 18, 2004 created SYS_VDEVIO to support drivers (Jorrit N. Herder)
26 * Feb 24, 2004 created SYS_IRQCTL to support drivers (Jorrit N. Herder)
27 * Feb 02, 2004 created SYS_DEVIO to support drivers (Jorrit N. Herder)
33 #include "kernel/kernel.h"
35 int do_exec(struct proc
* caller
, message
*m_ptr
);
40 int do_fork(struct proc
* caller
, message
*m_ptr
);
45 int do_clear(struct proc
* caller
, message
*m_ptr
);
50 int do_trace(struct proc
* caller
, message
*m_ptr
);
55 int do_runctl(struct proc
* caller
, message
*m_ptr
);
57 #define do_runctl NULL
60 int do_update(struct proc
* caller
, message
*m_ptr
);
62 #define do_update NULL
65 int do_exit(struct proc
* caller
, message
*m_ptr
);
70 int do_copy(struct proc
* caller
, message
*m_ptr
);
71 #define do_vircopy do_copy
72 #if ! (USE_VIRCOPY || USE_PHYSCOPY)
76 int do_umap(struct proc
* caller
, message
*m_ptr
);
81 int do_umap_remote(struct proc
* caller
, message
*m_ptr
);
83 #define do_umap_remote NULL
86 int do_vumap(struct proc
* caller
, message
*m_ptr
);
91 int do_memset(struct proc
* caller
, message
*m_ptr
);
93 #define do_memset NULL
96 int do_abort(struct proc
* caller
, message
*m_ptr
);
101 int do_getinfo(struct proc
* caller
, message
*m_ptr
);
103 #define do_getinfo NULL
106 int do_privctl(struct proc
* caller
, message
*m_ptr
);
108 #define do_privctl NULL
111 int do_irqctl(struct proc
* caller
, message
*m_ptr
);
113 #define do_irqctl NULL
116 int do_devio(struct proc
* caller
, message
*m_ptr
);
118 #define do_devio NULL
121 int do_vdevio(struct proc
* caller
, message
*m_ptr
);
123 #define do_vdevio NULL
126 int do_sdevio(struct proc
* caller
, message
*m_ptr
);
128 #define do_sdevio NULL
131 int do_kill(struct proc
* caller
, message
*m_ptr
);
136 int do_getksig(struct proc
* caller
, message
*m_ptr
);
138 #define do_getksig NULL
141 int do_endksig(struct proc
* caller
, message
*m_ptr
);
143 #define do_endksig NULL
146 int do_sigsend(struct proc
* caller
, message
*m_ptr
);
148 #define do_sigsend NULL
151 int do_sigreturn(struct proc
* caller
, message
*m_ptr
);
153 #define do_sigreturn NULL
156 int do_times(struct proc
* caller
, message
*m_ptr
);
158 #define do_times NULL
161 int do_setalarm(struct proc
* caller
, message
*m_ptr
);
163 #define do_setalarm NULL
166 int do_stime(struct proc
* caller
, message
*m_ptr
);
168 int do_vtimer(struct proc
* caller
, message
*m_ptr
);
170 #define do_vtimer NULL
173 int do_safecopy_to(struct proc
* caller
, message
*m_ptr
);
174 int do_safecopy_from(struct proc
* caller
, message
*m_ptr
);
175 int do_vsafecopy(struct proc
* caller
, message
*m_ptr
);
176 int do_iopenable(struct proc
* caller
, message
*m_ptr
);
177 int do_vmctl(struct proc
* caller
, message
*m_ptr
);
178 int do_setgrant(struct proc
* caller
, message
*m_ptr
);
179 int do_readbios(struct proc
* caller
, message
*m_ptr
);
181 int do_safememset(struct proc
* caller
, message
*m_ptr
);
183 int do_sprofile(struct proc
* caller
, message
*m_ptr
);
185 #define do_sprofile NULL
188 int do_cprofile(struct proc
* caller
, message
*m_ptr
);
189 int do_profbuf(struct proc
* caller
, message
*m_ptr
);
191 #define do_cprofile NULL
192 #define do_profbuf NULL
195 int do_getmcontext(struct proc
* caller
, message
*m_ptr
);
196 int do_setmcontext(struct proc
* caller
, message
*m_ptr
);
198 #define do_getmcontext NULL
199 #define do_setmcontext NULL
202 int do_schedule(struct proc
* caller
, message
*m_ptr
);
203 int do_schedctl(struct proc
* caller
, message
*m_ptr
);
205 int do_statectl(struct proc
* caller
, message
*m_ptr
);
207 #define do_statectl NULL
210 #endif /* SYSTEM_H */