|
@@ -0,0 +1,1024 @@
|
|
|
+
|
|
|
+
|
|
|
+ * Syscalls for uC-Libc
|
|
|
+ *
|
|
|
+ * Copyright (C) 2000 by Lineo, inc. Written by Erik Andersen
|
|
|
+ * <andersen@lineo.com>, <andersee@debian.org>
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
+ * under the terms of the GNU Library General Public License as published by
|
|
|
+ * the Free Software Foundation; either version 2 of the License, or (at your
|
|
|
+ * option) any later version.
|
|
|
+ *
|
|
|
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
+ * more details.
|
|
|
+ *
|
|
|
+ * You should have received a copy of the GNU Library General Public License
|
|
|
+ * along with this program; if not, write to the Free Software Foundation,
|
|
|
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+#include <errno.h>
|
|
|
+#include <features.h>
|
|
|
+#include <sys/types.h>
|
|
|
+#include <sys/syscall.h>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__exit
|
|
|
+
|
|
|
+ * _exit returning. It really doesn't return... */
|
|
|
+#define __NR__exit __NR_exit
|
|
|
+_syscall1(void,_exit,int,status);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fork
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(pid_t,fork);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_read
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(size_t,read,int,fd,char *,buf,size_t,count);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_write
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(size_t,write,int,fd,const char *,buf,size_t,count);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L___open
|
|
|
+#include <stdarg.h>
|
|
|
+#include <fcntl.h>
|
|
|
+#define __NR___open __NR_open
|
|
|
+_syscall3(int,__open,const char *,fn,int,flags,mode_t,mode);
|
|
|
+
|
|
|
+int open (const char *file, int oflag, ...)
|
|
|
+{
|
|
|
+ int mode=0;
|
|
|
+ if (oflag & O_CREAT)
|
|
|
+ {
|
|
|
+ va_list args;
|
|
|
+ va_start(args, oflag);
|
|
|
+ mode = va_arg(args, int);
|
|
|
+ va_end(args);
|
|
|
+ }
|
|
|
+
|
|
|
+ return __open(file, oflag, mode);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_close
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,close,int,fd);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#include <sys/wait.h>
|
|
|
+#ifdef L_waitpid
|
|
|
+_syscall3(pid_t,waitpid,pid_t,pid,int *,status,int,options);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_creat
|
|
|
+#include <fcntl.h>
|
|
|
+_syscall2(int,creat,const char *,file,mode_t,mode);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_link
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,link,const char *,oldpath,const char *,newpath);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_unlink
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,unlink,const char *,pathname);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_execve
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,execve,const char *,filename, char *const *, argv, char *const *, envp);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_chdir
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,chdir,const char *,path);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_time
|
|
|
+#include <time.h>
|
|
|
+_syscall1(time_t,time,time_t *,t);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mknod
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,mknod,const char *,pathname, mode_t, mode, dev_t, dev);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_chmod
|
|
|
+#include <sys/stat.h>
|
|
|
+_syscall2(int, chmod,const char *,path, mode_t,mode);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_lchown
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,lchown,const char *,path, uid_t,owner, gid_t,group);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_lseek
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(off_t,lseek,int,fildes, off_t,offset, int,whence);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getpid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(pid_t,getpid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mount
|
|
|
+#include <sys/mount.h>
|
|
|
+_syscall5(int,mount,const char *,specialfile,const char *,dir,
|
|
|
+ const char *,filesystemtype, unsigned long,rwflag,
|
|
|
+ const void *,data);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_umount
|
|
|
+#include <sys/mount.h>
|
|
|
+_syscall1(int,umount,const char *,specialfile);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setuid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,setuid,uid_t,uid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getuid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(gid_t,getuid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_stime
|
|
|
+#include <time.h>
|
|
|
+_syscall1(int,stime,time_t *,t);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_alarm
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(unsigned int,alarm,unsigned int,seconds);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_pause
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(int,pause);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_utime
|
|
|
+#include <utime.h>
|
|
|
+_syscall2(int,utime,const char *,filename, struct utimbuf *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_access
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,access,const char *,pathname, int,mode);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_nice
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,nice,int,inc);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sync
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(int,sync);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_kill
|
|
|
+#include <signal.h>
|
|
|
+_syscall2(int,kill,pid_t,pid,int,sig);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_rename
|
|
|
+#include <stdio.h>
|
|
|
+_syscall2(int,rename,const char *,oldpath, const char *,newpath);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mkdir
|
|
|
+#include <sys/stat.h>
|
|
|
+_syscall2(int,mkdir,const char *,pathname, mode_t,mode);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_rmdir
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,rmdir,const char *,pathname);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_dup
|
|
|
+
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,dup,int,oldfd);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_pipe
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,pipe,int*,filedes);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_times
|
|
|
+#include <sys/times.h>
|
|
|
+_syscall1(clock_t,times,struct tms *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setgid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,setgid,gid_t,gid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getgid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(gid_t,getgid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_geteuid
|
|
|
+#ifdef SYS_geteuid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(uid_t,geteuid);
|
|
|
+#else
|
|
|
+uid_t geteuid(void)
|
|
|
+{
|
|
|
+ return(getuid());
|
|
|
+}
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getegid
|
|
|
+#ifdef SYS_getegid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(gid_t,getegid);
|
|
|
+#else
|
|
|
+gid_t getegid(void)
|
|
|
+{
|
|
|
+ return(getgid());
|
|
|
+}
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_umount2
|
|
|
+#include <sys/mount.h>
|
|
|
+_syscall2(int,umount2,const char *,special_file,int,flags);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__ioctl
|
|
|
+#include <stdarg.h>
|
|
|
+#include <sys/ioctl.h>
|
|
|
+#define __NR__ioctl __NR_ioctl
|
|
|
+_syscall3(int,_ioctl,int,fd,int,request,void *,arg);
|
|
|
+
|
|
|
+int ioctl (int fd, unsigned long int request, ...)
|
|
|
+{
|
|
|
+ void * arg;
|
|
|
+ va_list list;
|
|
|
+
|
|
|
+ va_start(list, request);
|
|
|
+ arg = va_arg(list, void *);
|
|
|
+ va_end(list);
|
|
|
+ return _ioctl(fd, request, arg);
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__fcntl
|
|
|
+#include <stdarg.h>
|
|
|
+#include <fcntl.h>
|
|
|
+#define __NR__fcntl __NR_fcntl
|
|
|
+_syscall3(int,_fcntl,int,fd,int,cmd,long,arg);
|
|
|
+
|
|
|
+int fcntl(int fd, int command, ...)
|
|
|
+{
|
|
|
+ long arg;
|
|
|
+ va_list list;
|
|
|
+
|
|
|
+ va_start(list, command);
|
|
|
+ arg = va_arg(list, long);
|
|
|
+ va_end(list);
|
|
|
+ return _fcntl(fd, command, arg);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setpgid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,setpgid,pid_t,pid,pid_t,pgid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_umask
|
|
|
+#include <sys/stat.h>
|
|
|
+_syscall1(mode_t,umask,mode_t,mask);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_chroot
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,chroot,const char *,path);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_dup2
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,dup2,int,oldfd,int,newfd);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getppid
|
|
|
+#include <unistd.h>
|
|
|
+#ifdef SYS_getppid
|
|
|
+_syscall0(pid_t,getppid);
|
|
|
+#else
|
|
|
+pid_t getppid(void)
|
|
|
+{
|
|
|
+ return(getpid());
|
|
|
+}
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getpgrp
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(pid_t,getpgrp);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setsid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(pid_t,setsid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sigaction
|
|
|
+#include <signal.h>
|
|
|
+_syscall3(int,sigaction,int,signum, const struct sigaction *,act, struct sigaction *,oldact);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setreuid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,setreuid,uid_t,ruid,uid_t,euid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setregid
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,setregid,gid_t,rgid,gid_t,egid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sigsuspend
|
|
|
+#include <signal.h>
|
|
|
+_syscall1(int,sigsuspend,const sigset_t *,mask);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sigpending
|
|
|
+#include <signal.h>
|
|
|
+_syscall1(int,sigpending,sigset_t *,set);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sethostname
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,sethostname,const char *,name, size_t,len);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setrlimit
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall2(int,setrlimit,int,resource,const struct rlimit *,rlim);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getrlimit
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall2(int,getrlimit,int,resource,struct rlimit *,rlim);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getrusage
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,getrusage,int,who,struct rusage *,usage);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_gettimeofday
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,gettimeofday,struct timeval *,tv, struct timezone *,tz);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_settimeofday
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,settimeofday,const struct timeval *,tv, const struct timezone *,tz);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getgroups
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,getgroups,int,size,gid_t *,list);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setgroups
|
|
|
+#include <unistd.h>
|
|
|
+#include <grp.h>
|
|
|
+_syscall2(int,setgroups,size_t,size,const gid_t *,list);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_select
|
|
|
+#include <unistd.h>
|
|
|
+_syscall5(int,select,int, n, fd_set *,readfds, fd_set *,writefds,
|
|
|
+ fd_set *,exceptfds, struct timeval *,timeout);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_symlink
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,symlink,const char *,oldpath,const char *,newpath);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_readlink
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,readlink,const char *,path, char *,buf, size_t,bufsiz);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_uselib
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,uselib,const char *,library);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_swapon
|
|
|
+#include <sys/swap.h>
|
|
|
+_syscall2(int,swapon,const char *,path,int,swapflags);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__reboot
|
|
|
+#define __NR__reboot __NR_reboot
|
|
|
+_syscall3(int,_reboot,int,magic,int,magic2,int,flag);
|
|
|
+
|
|
|
+int reboot (int flag)
|
|
|
+{
|
|
|
+ return (_reboot( (int)0xfee1dead, 672274793, flag));
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__mmap
|
|
|
+#define __NR__mmap __NR_mmap
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/mman.h>
|
|
|
+
|
|
|
+_syscall1(__ptr_t,_mmap,unsigned long *,buffer);
|
|
|
+
|
|
|
+__ptr_t mmap(__ptr_t addr, size_t len, int prot,
|
|
|
+ int flags, int fd, __off_t offset)
|
|
|
+{
|
|
|
+ unsigned long buffer[6];
|
|
|
+
|
|
|
+ buffer[0] = (unsigned long)addr;
|
|
|
+ buffer[1] = (unsigned long)len;
|
|
|
+ buffer[2] = (unsigned long)prot;
|
|
|
+ buffer[3] = (unsigned long)flags;
|
|
|
+ buffer[4] = (unsigned long)fd;
|
|
|
+ buffer[5] = (unsigned long)offset;
|
|
|
+ return (__ptr_t) _mmap(buffer);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_munmap
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/mman.h>
|
|
|
+_syscall2(int,munmap,void *,start,size_t,length);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_truncate
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,truncate,const char *,path, off_t,length);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_ftruncate
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,ftruncate,int,fd,off_t,length);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fchmod
|
|
|
+#include <sys/stat.h>
|
|
|
+_syscall2(int,fchmod,int,fildes, mode_t,mode);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fchown
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,fchown,int,fd,uid_t,owner, gid_t,group);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getpriority
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall2(int,getpriority,int,which, int,who);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setpriority
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall3(int,setpriority,int,which, int,who, int,prio);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_statfs
|
|
|
+#include <sys/vfs.h>
|
|
|
+_syscall2(int,statfs,const char *,path, struct statfs *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fstatfs
|
|
|
+#include <sys/vfs.h>
|
|
|
+_syscall2(int,fstatfs,int,fd, struct statfs *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_ioperm
|
|
|
+#include <sys/io.h>
|
|
|
+syscall3(int,ioperm,unsigned,long,from,unsigned long, num, int, turn_on);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_socketcall
|
|
|
+_syscall2(int,socketcall,int,call,unsigned long *,args);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_syslog
|
|
|
+#include <unistd.h>
|
|
|
+#define __NR__syslog __NR_syslog
|
|
|
+_syscall3(int,_syslog,int, type, char *, buf, int, len);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setitimer
|
|
|
+#include <sys/time.h>
|
|
|
+_syscall3(int,setitimer,enum __itimer_which,which, const struct itimerval *,new, struct itimerval *,old);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getitimer
|
|
|
+#include <sys/time.h>
|
|
|
+_syscall2(int,getitimer,enum __itimer_which,which, struct itimerval *,value);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_stat
|
|
|
+#include <sys/stat.h>
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,stat,const char *,file_name, struct stat *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_lstat
|
|
|
+#include <sys/stat.h>
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,lstat,const char *,file_name, struct stat *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fstat
|
|
|
+#include <sys/stat.h>
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,fstat,int,filedes, struct stat *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_iopl
|
|
|
+#include <sys/io.h>
|
|
|
+_syscall1(int,iopl,int,level);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_vhangup
|
|
|
+#include <unistd.h>
|
|
|
+_syscall0(int,vhangup);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_wait4
|
|
|
+#include <sys/wait.h>
|
|
|
+_syscall4(pid_t,wait4,pid_t,pid, int *,status, int,options, struct rusage *,rusage);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_swapoff
|
|
|
+#include <sys/swap.h>
|
|
|
+_syscall1(int,swapoff,const char *,path);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sysinfo
|
|
|
+#include <sys/sysinfo.h>
|
|
|
+_sysinfo(int,sysinfo,struct sysinfo *,info);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_ipc
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fsync
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,fsync,int,fd);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setdomainname
|
|
|
+#include <unistd.h>
|
|
|
+_syscall2(int,setdomainname,const char *,name, size_t,len);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_uname
|
|
|
+#include <sys/utsname.h>
|
|
|
+_syscall1(int,uname,struct utsname *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_adjtimex
|
|
|
+#include <sys/timex.h>
|
|
|
+_syscall1(int,adjtimex,struct timex *,buf);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mprotect
|
|
|
+#include <sys/mman.h>
|
|
|
+_syscall3(int,mprotect,const void *,addr, size_t,len, int,prot);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sigprocmask
|
|
|
+#include <signal.h>
|
|
|
+_syscall3(int,sigprocmask,int,how, const sigset_t *,set, sigset_t *,oldset);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getpgid
|
|
|
+_syscall1(pid_t,getpgid,pid_t,pid);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fchdir
|
|
|
+#include <unistd.h>
|
|
|
+_syscall1(int,fchdir,int,fd);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setfsuid
|
|
|
+SYSCALL__ (setfsuid, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_setfsgid
|
|
|
+SYSCALL__ (setfsgid, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L__llseek
|
|
|
+_syscall5(int,_llseek,int,fd,off_t,hoff,off_t,loff,loff_t*,res,int,whence);
|
|
|
+
|
|
|
+loff_t llseek (int fd, loff_t offset, int whence)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+ loff_t result;
|
|
|
+
|
|
|
+ ret = _llseek (fd, (off_t) (offset >> 32),
|
|
|
+ (off_t) (offset & 0xffffffff), &result, whence);
|
|
|
+
|
|
|
+ return ret ? (loff_t) ret : result;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getdents
|
|
|
+SYSCALL__ (getdents, 3)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_flock
|
|
|
+SYSCALL__ (flock, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_msync
|
|
|
+SYSCALL__ (msync, 3)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_readv
|
|
|
+#include <sys/uio.h>
|
|
|
+_syscall3(ssize_t,readv,int,filedes, const struct iovec *,vector, int,count);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_writev
|
|
|
+#include <sys/uio.h>
|
|
|
+_syscall3(ssize_t,writev,int,filedes, const struct iovec *,vector, int,count);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_getsid
|
|
|
+SYSCALL__ (getsid, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_fdatasync
|
|
|
+SYSCALL__ (fdatasync, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mlock
|
|
|
+SYSCALL__ (mlock, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_munlock
|
|
|
+SYSCALL__ (munlock, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mlockall
|
|
|
+SYSCALL__ (mlockall, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_munlockall
|
|
|
+SYSCALL__ (munlockall, 0)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_setparam
|
|
|
+SYSCALL__ (sched_setparam, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_getparam
|
|
|
+SYSCALL__ (sched_getparam, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_setscheduler
|
|
|
+SYSCALL__ (sched_setscheduler, 3)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_getscheduler
|
|
|
+SYSCALL__ (sched_getscheduler, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_yield
|
|
|
+SYSCALL__ (sched_yield, 0)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_get_priority_max
|
|
|
+SYSCALL__ (sched_get_priority_max, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_get_priority_min
|
|
|
+SYSCALL__ (sched_get_priority_min, 1)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_sched_rr_get_interval
|
|
|
+SYSCALL__ (sched_rr_get_interval, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_nanosleep
|
|
|
+SYSCALL__ (nanosleep, 2)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_mremap
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/mman.h>
|
|
|
+_syscall4(__ptr_t,mremap,__ptr_t,old_address,size_t,old_size , size_t,new_size,int,may_move);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_poll
|
|
|
+SYSCALL__ (poll, 3)
|
|
|
+ ret
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#ifdef L_chown
|
|
|
+#include <unistd.h>
|
|
|
+_syscall3(int,chown,const char *,path, uid_t,owner, gid_t,group);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|