Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1122 - (hide annotations) (download)
Wed Aug 18 21:11:40 2010 UTC (13 years, 9 months ago) by niro
File size: 9650 byte(s)
-updated to klibc-1.5.19
1 niro 532 /* -*- 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 niro 1122 int getrusage(int, struct rusage *);
51 niro 532 int sched_setscheduler(pid_t, int, const struct sched_param *);
52     int sched_yield();
53     <i386> int prctl@varadic(int, unsigned long, unsigned long, unsigned long, unsigned long);
54     <!i386> int prctl(int, unsigned long, unsigned long, unsigned long, unsigned long);
55    
56     /*
57     * User and group IDs
58     */
59     int setuid32,setuid::setuid(uid_t);
60     int setgid32,setgid::setgid(gid_t);
61     <!alpha> uid_t getuid32,getuid::getuid();
62     <alpha> uid_t getxuid@dual0::getuid();
63     <!alpha> gid_t getgid32,getgid::getgid();
64     <alpha> gid_t getxgid@dual0::getgid();
65     <!alpha> uid_t geteuid32,geteuid::geteuid();
66     <alpha> uid_t getxuid@dual1::geteuid();
67     <!alpha> gid_t getegid32,getegid::getegid();
68     <alpha> gid_t getxgid@dual1::getegid();
69     int getgroups32,getgroups::getgroups(int, gid_t *);
70     int setgroups32,setgroups::setgroups(size_t, const gid_t *);
71     int setreuid32,setreuid::setreuid(uid_t, uid_t);
72     int setregid32,setregid::setregid(gid_t, gid_t);
73     int setfsuid32,setfsuid::setfsuid(uid_t);
74     int setfsgid32,setfsgid::setfsgid(gid_t);
75     int setresuid32,setresuid::setresuid(int, uid_t, uid_t, uid_t);
76    
77     /*
78     * Filesystem-related system calls
79     */
80     int mount(const char *, const char *, const char *, unsigned long, const void *);
81     <!alpha,ia64> int umount2(const char *, int);
82     <alpha,ia64> int umount::umount2(const char *, int);
83     <?> int pivot_root(const char *, const char *);
84     int sync();
85     #ifdef __NR_statfs64
86     int statfs64::__statfs64(const char *, size_t, struct statfs *);
87     #else
88     int statfs(const char *, struct statfs *);
89     #endif
90     #ifdef __NR_fstatfs64
91     int fstatfs64::__fstatfs64(int, size_t, struct statfs *);
92     #else
93     int fstatfs(int, struct statfs *);
94     #endif
95     int swapon(const char *, int);
96     int swapoff(const char *);
97    
98     /*
99     * Inode-related system calls
100     */
101     int access(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 niro 1122 <!alpha,ia64,mips,mips64,sh,sparc,sparc64> int pipe(int *);
119 niro 532 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 niro 1122 #if ! _KLIBC_SYS_SOCKETCALL
263 niro 532 #include "SOCKETCALLS.def"
264 niro 1122 #endif