Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/SYSCALLS.def
Parent Directory | Revision Log
Revision 532 -
(show annotations)
(download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File size: 9618 byte(s)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File size: 9618 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd
1 | /* -*- c -*- |
2 | * |
3 | * This is a list of system calls we invoke "directly". These |
4 | * are generated into syscall stubs in their own files, so the |
5 | * linker can do its job properly. |
6 | * |
7 | * The full description of a line is: |
8 | * [<[?][!]arch,...>] type [sysname,...][@systype][::funcname](args); |
9 | * |
10 | * ? means only instantiate this system call if present in asm/unistd.h |
11 | */ |
12 | |
13 | #include <asm/unistd.h> |
14 | #include <klibc/sysconfig.h> |
15 | #include <bitsize.h> |
16 | |
17 | /* |
18 | * Process-related syscalls |
19 | */ |
20 | void _exit,exit::_exit(int); |
21 | <?!ia64> pid_t clone::__clone(unsigned long, void *); |
22 | <?ia64> pid_t clone::__clone2(unsigned long, void *, void *); |
23 | # if ! _KLIBC_NO_MMU |
24 | <!sparc,sparc64,ia64> pid_t fork(); |
25 | <sparc,sparc64> pid_t fork@forkish(); |
26 | #endif |
27 | #if _KLIBC_REAL_VFORK |
28 | /* |
29 | * A lot of architectures need architecture-specific vfork |
30 | * stubs, due to the no-stack requirement. These are the |
31 | * architectures which do not. |
32 | */ |
33 | <alpha,m32r,ppc,ppc64,sh,s390,s390x> pid_t vfork(); |
34 | <sparc,sparc64> pid_t vfork@forkish(); |
35 | #endif |
36 | <!alpha> pid_t getpid(); |
37 | <alpha> pid_t getxpid@dual0::getpid(); |
38 | int setpgid(pid_t, pid_t); |
39 | pid_t getpgid(pid_t); |
40 | <!alpha> pid_t getppid(); |
41 | <alpha> pid_t getxpid@dual1::getppid(); |
42 | pid_t setsid(); |
43 | pid_t getsid(pid_t); |
44 | pid_t wait4(pid_t, int *, int, struct rusage *); |
45 | int execve(const char *, char * const *, char * const *); |
46 | <?> int nice(int); |
47 | <alpha,ia64> int getpriority(int, int); |
48 | <!alpha,ia64> int getpriority::__getpriority(int, int); |
49 | int setpriority(int, int, int); |
50 | int sched_setscheduler(pid_t, int, const struct sched_param *); |
51 | int sched_yield(); |
52 | <i386> int prctl@varadic(int, unsigned long, unsigned long, unsigned long, unsigned long); |
53 | <!i386> int prctl(int, unsigned long, unsigned long, unsigned long, unsigned long); |
54 | |
55 | /* |
56 | * User and group IDs |
57 | */ |
58 | int setuid32,setuid::setuid(uid_t); |
59 | int setgid32,setgid::setgid(gid_t); |
60 | <!alpha> uid_t getuid32,getuid::getuid(); |
61 | <alpha> uid_t getxuid@dual0::getuid(); |
62 | <!alpha> gid_t getgid32,getgid::getgid(); |
63 | <alpha> gid_t getxgid@dual0::getgid(); |
64 | <!alpha> uid_t geteuid32,geteuid::geteuid(); |
65 | <alpha> uid_t getxuid@dual1::geteuid(); |
66 | <!alpha> gid_t getegid32,getegid::getegid(); |
67 | <alpha> gid_t getxgid@dual1::getegid(); |
68 | int getgroups32,getgroups::getgroups(int, gid_t *); |
69 | int setgroups32,setgroups::setgroups(size_t, const gid_t *); |
70 | int setreuid32,setreuid::setreuid(uid_t, uid_t); |
71 | int setregid32,setregid::setregid(gid_t, gid_t); |
72 | int setfsuid32,setfsuid::setfsuid(uid_t); |
73 | int setfsgid32,setfsgid::setfsgid(gid_t); |
74 | int setresuid32,setresuid::setresuid(int, uid_t, uid_t, uid_t); |
75 | |
76 | /* |
77 | * Filesystem-related system calls |
78 | */ |
79 | int mount(const char *, const char *, const char *, unsigned long, const void *); |
80 | <!alpha,ia64> int umount2(const char *, int); |
81 | <alpha,ia64> int umount::umount2(const char *, int); |
82 | <?> int pivot_root(const char *, const char *); |
83 | int sync(); |
84 | #ifdef __NR_statfs64 |
85 | int statfs64::__statfs64(const char *, size_t, struct statfs *); |
86 | #else |
87 | int statfs(const char *, struct statfs *); |
88 | #endif |
89 | #ifdef __NR_fstatfs64 |
90 | int fstatfs64::__fstatfs64(int, size_t, struct statfs *); |
91 | #else |
92 | int fstatfs(int, struct statfs *); |
93 | #endif |
94 | int swapon(const char *, int); |
95 | int swapoff(const char *); |
96 | |
97 | /* |
98 | * Inode-related system calls |
99 | */ |
100 | int access(const char *, int); |
101 | <?> int faccessat(int, const char *, int); |
102 | int link(const char *, const char *); |
103 | <?> int linkat(int, const char *, int, const char *); |
104 | int unlink(const char *); |
105 | <?> int unlinkat(int, const char *); |
106 | int chdir(const char *); |
107 | int fchdir(int); |
108 | int rename(const char *, const char *); |
109 | <?> int renameat(int, const char *, int, const char *); |
110 | int mknod(const char *, mode_t, dev_t); |
111 | <?> int mknodat(int, const char *, const char *, mode_t, dev_t); |
112 | int chmod(const char *, mode_t); |
113 | int fchmod(int, mode_t); |
114 | <?> int fchmodat(int, const char *, mode_t); |
115 | int mkdir(const char *, mode_t); |
116 | <?> int mkdirat(int, const char *, const char *, mode_t); |
117 | int rmdir(const char *); |
118 | <!alpha,ia64,mips,mips64,sparc,sparc64> int pipe(int *); |
119 | mode_t umask(mode_t); |
120 | int chroot(const char *); |
121 | int symlink(const char *, const char *); |
122 | <?> int symlinkat(const char *, int, const char *); |
123 | int readlink(const char *, char *, size_t); |
124 | <?> int readlinkat(int, const char *, char *, int); |
125 | <!ppc64> int stat64,stat::stat(const char *, struct stat *); |
126 | <!ppc64> int lstat64,lstat::lstat(const char *, struct stat *); |
127 | <!ppc64> int fstat64,fstat::fstat(int, struct stat *); |
128 | <ppc64> int stat::stat(const char *, struct stat *); |
129 | <ppc64> int lstat::lstat(const char *, struct stat *); |
130 | <ppc64> int fstat::fstat(int, struct stat *); |
131 | /* XXX: Is this right?! */ |
132 | <?> int fstatat64,newstatat,fstatat::fstatat(int, const char *, struct stat *, int); |
133 | int getdents64,getdents::getdents(unsigned int, struct dirent *, unsigned int); |
134 | int chown32,chown::chown(const char *, uid_t, gid_t); |
135 | int fchown32,fchown::fchown(int, uid_t, gid_t); |
136 | <?> int fchownat(int, const char *, uid_t, gid_t, int); |
137 | int lchown32,lchown::lchown(const char *, uid_t, gid_t); |
138 | int getcwd::__getcwd(char *, size_t); |
139 | <?> int utime(const char *, const struct utimbuf *); |
140 | <?> int utimes(const char *, const struct timeval *); |
141 | <?> int futimesat(int, const char *, const struct timeval *); |
142 | <?> int inotify_init(); |
143 | <?> int inotify_add_watch(int, const char *, __u32); |
144 | <?> int inotify_rm_watch(int, __u32); |
145 | |
146 | /* |
147 | * I/O operations |
148 | */ |
149 | <!i386,64> int open::__open(const char *, int, mode_t); |
150 | <?!i386,64> int openat::__openat(int, const char *, int, mode_t); |
151 | <64> int open(const char *, int, mode_t); |
152 | ssize_t read(int, void *, size_t); |
153 | ssize_t write(int, const void *, size_t); |
154 | int close(int); |
155 | <64> off_t lseek(int, off_t, int); |
156 | <32> int _llseek::__llseek(int, unsigned long, unsigned long, off_t *, int); |
157 | int dup(int); |
158 | int dup2(int, int); |
159 | <i386> int fcntl64@varadic::fcntl(int, int, unsigned long); |
160 | <ppc64> int fcntl(int, int, unsigned long); |
161 | <!i386,ppc64> int fcntl64,fcntl::fcntl(int, int, unsigned long); |
162 | int ioctl(int, int, void *); |
163 | int flock(int, int); |
164 | int _newselect,select::select(int, fd_set *, fd_set *, fd_set *, struct timeval *); |
165 | #if defined(__NR_pselect) && !_KLIBC_USE_RT_SIG |
166 | int pselect(int, fd_set *, fd_set *, fd_set *, const struct timespec *, const sigset_t *); |
167 | #elif defined(__NR_pselect7) |
168 | int pselect7::__pselect7(int, fd_set *, fd_set *, fd_set *, struct timespec *, const sigset_t *, size_t); |
169 | #elif defined(__NR_pselect6) |
170 | int pselect6::__pselect6(int, fd_set *, fd_set *, fd_set *, struct timespec *, const struct __pselect6 *); |
171 | #endif |
172 | int poll(struct pollfd *, nfds_t, long); |
173 | <?> int ppoll::__ppoll(struct pollfd *, nfds_t, struct timespec *, const sigset_t *, size_t); |
174 | int fsync(int); |
175 | int fdatasync,fsync::fdatasync(int); |
176 | int readv(int, const struct iovec *, int); |
177 | int writev(int, const struct iovec *, int); |
178 | int ftruncate64,ftruncate::ftruncate(int, off_t); |
179 | ssize_t pread64,pread::pread(int, void *, size_t, off_t); |
180 | ssize_t pwrite64,pwrite::pwrite(int, void *, size_t, off_t); |
181 | int sync_file_range,fdatasync,fsync::sync_file_range(int, off_t, off_t, unsigned int); |
182 | <?> int splice(int, off_t *, int, off_t *, size_t, unsigned int); |
183 | <?> int tee(int, int, size_t, unsigned int); |
184 | ssize_t sendfile64,sendfile::sendfile(int, int, off_t *, size_t, off_t); |
185 | |
186 | /* |
187 | * Signal operations |
188 | * |
189 | * We really should get rid of the non-rt_* of these, but that takes |
190 | * sanitizing <signal.h> for all architectures, sigh. See <klibc/config.h>. |
191 | */ |
192 | #if _KLIBC_USE_RT_SIG |
193 | <!sparc,sparc64> int rt_sigaction::__rt_sigaction(int, const struct sigaction *, struct sigaction *, size_t); |
194 | <sparc,sparc64> int rt_sigaction::__rt_sigaction(int, const struct sigaction *, struct sigaction *, void *, size_t); |
195 | int rt_sigsuspend::__rt_sigsuspend(const sigset_t *, size_t); |
196 | int rt_sigpending::__rt_sigpending(sigset_t *, size_t); |
197 | int rt_sigprocmask::__rt_sigprocmask(int, const sigset_t *, sigset_t *, size_t); |
198 | <sparc64> void rt_sigreturn::__sigreturn(); |
199 | #else |
200 | int sigaction::__sigaction(int, const struct sigaction *, struct sigaction *); |
201 | int sigsuspend(const sigset_t *); |
202 | int sigpending(sigset_t *); |
203 | int sigprocmask(int, const sigset_t *, sigset_t *); |
204 | #endif |
205 | int kill(pid_t, int); |
206 | <?> unsigned int alarm(unsigned int); |
207 | int getitimer(int, struct itimerval *); |
208 | int setitimer(int, const struct itimerval *, struct itimerval *); |
209 | |
210 | /* |
211 | * Time-related system calls |
212 | */ |
213 | <?> time_t time(time_t *); |
214 | clock_t times(struct tms *); |
215 | int gettimeofday(struct timeval *, struct timezone *); |
216 | int settimeofday(const struct timeval *, const struct timezone *); |
217 | int nanosleep(const struct timespec *, struct timespec *); |
218 | <?> int pause(); |
219 | |
220 | /* |
221 | * Memory |
222 | */ |
223 | <?> void * brk::__brk(void *); |
224 | int munmap(void *, size_t); |
225 | void * mremap(void *, size_t, size_t, unsigned long); |
226 | int msync(const void *, size_t, int); |
227 | int mprotect(const void *, size_t, int); |
228 | # if _KLIBC_USE_MMAP2 |
229 | <!s390> void * mmap2::__mmap2(void *, size_t, int, int, int, long); |
230 | # else |
231 | <!s390x> void * mmap(void *, size_t, int, int, int, long); |
232 | int mlockall(int); |
233 | int munlockall(); |
234 | int mlock(const void *, size_t); |
235 | int munlock(const void *, size_t); |
236 | #endif |
237 | |
238 | /* |
239 | * System stuff |
240 | */ |
241 | int uname(struct utsname *); |
242 | int setdomainname(const char *, size_t); |
243 | int sethostname(const char *, size_t); |
244 | long init_module(void *, unsigned long, const char *); |
245 | long delete_module(const char *, unsigned int); |
246 | int reboot::__reboot(int, int, int, void *); |
247 | int syslog::klogctl(int, char *, int); |
248 | int sysinfo(struct sysinfo *); |
249 | |
250 | /* |
251 | * Low-level I/O (generally architecture-specific); |
252 | */ |
253 | <i386,x86_64> int iopl(int); |
254 | <i386,x86_64> int ioperm(unsigned long, unsigned long, int); |
255 | <i386> int vm86(struct vm86_struct *); |
256 | |
257 | /* |
258 | * Most architectures have the socket interfaces using regular |
259 | * system calls. |
260 | */ |
261 | <?!i386> long socketcall::__socketcall(int, const unsigned long *); |
262 | #include "SOCKETCALLS.def" |