Magellan Linux

Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/SYSCALLS.def

Parent Directory Parent Directory | Revision Log 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)
-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"