]> Git Repo - uclibc-ng.git/commitdiff
Added a script to create bits/syscall.h for each arch.
authorManuel Novoa III <[email protected]>
Thu, 28 Jun 2001 01:59:07 +0000 (01:59 -0000)
committerManuel Novoa III <[email protected]>
Thu, 28 Jun 2001 01:59:07 +0000 (01:59 -0000)
NOTE!!! This is run by "make -C libc/sysdeps/linux/$(TARGET_ARCH) headers"
in the main Makefile, but I only changed libc/sysdeps/linux/i386/Makefile
as I had no way of testing it for the other archs.  Various arch maintainers,
please check and update the corresponding Makefile... or report bugs ;-)...
appropriately.  You'll also want to "cvs del" syscall.h and add it to
a .cvsignore in $(ARCH)/bits.
Also added a define to uClibc_config.h, __UCLIBC_USE_UNIFIED_SYSCALL__, and
moved i386 unified syscall stuff out of common and into i386/bits/syscalls.h.

Makefile
TODO
extra/scripts/gen_bits_syscall_h.sh [new file with mode: 0755]
libc/sysdeps/linux/common/.cvsignore [deleted file]
libc/sysdeps/linux/common/Makefile
libc/sysdeps/linux/common/create_module.c
libc/sysdeps/linux/common/syscalls.c
libc/sysdeps/linux/i386/Makefile
libc/sysdeps/linux/i386/bits/.cvsignore [new file with mode: 0644]
libc/sysdeps/linux/i386/bits/syscall.h [deleted file]
libc/sysdeps/linux/i386/bits/syscalls.h

index c081116f3df8906a10a7100d1cede7a3645a2dd2..0e6f077313f9057859f7f63a8e7c95197b20c07b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -149,6 +149,11 @@ uClibc_config.h: Makefile Config
        else \
            echo "#undef __UCLIBC_HAS_RPC__" >> uClibc_config.h ; \
        fi
+       @if [ "$(UNIFIED_SYSCALL)" = "true" ] ; then \
+           echo "#define __UCLIBC_USE_UNIFIED_SYSCALL__ 1" >> uClibc_config.h ; \
+       else \
+           echo "#undef __UCLIBC_USE_UNIFIED_SYSCALL__" >> uClibc_config.h ; \
+       fi
 
 subdirs: $(patsubst %, _dir_%, $(DIRS))
 
@@ -213,7 +218,6 @@ clean:
        - find include -type l -exec rm -f {} \;
        - find . \( -name \*.o -o -name \*.a -o -name \*.so -o -name core \) -exec rm -f {} \;
        $(MAKE) -C ldso clean
-       $(MAKE) -C libc/sysdeps/linux/common clean
        $(MAKE) -C libc/unistd clean
 
 .PHONY: dummy subdirs
diff --git a/TODO b/TODO
index f17ffee530085e741f7a4da98eae2e59df49e16a..4d7fa66e7c38269fefa38cbf6a065f7d415a0e80 100644 (file)
--- a/TODO
+++ b/TODO
@@ -25,10 +25,6 @@ Manuel's unsorted todo:
 Move the target-specific sysconf.c generator to extra (as it needs to be
        run on the target) and fix libc/unistd/Makefile.
 
-Move the unified syscall stuff to extra, or find a way to generate the
-       the required header file without using an intermediate binary.
-       Update: should be easy now that Erik has added bits/syscalls.h.
-
 Add a usage message to the gcc wrapper.
 
 Look at pre-cephes-addition floating point code and possibly rework.
@@ -53,3 +49,8 @@ Make errno and endptr handling the default in the strto* functions and
        document how to turn those off to save space.
 
 -----------------------------------------------------------------------------
+
+PORTING
+-------
+
+bits/dirent.h currently differs from the glibc version (d_type unsupported)
diff --git a/extra/scripts/gen_bits_syscall_h.sh b/extra/scripts/gen_bits_syscall_h.sh
new file mode 100755 (executable)
index 0000000..51f68fc
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# June 27, 2001         Manuel Novoa III
+#
+# This script expects TOPDIR and CC (as used in the Makefiles) to be set in
+# the environment, and outputs the appropriate $TOPDIR/include/bits/syscall.h
+# corresponding to $TOPDIR/include/asm/unistd.h to stdout.
+#
+# Warning!!! This does _no_ error checking!!!
+
+UNISTD_H_PATH=$TOPDIR/include/asm/unistd.h
+
+( echo "#include \"$UNISTD_H_PATH\"" ;
+  $CC -E -dN $UNISTD_H_PATH | # needed to strip out any kernel-internal defines
+  sed -ne 's/^[ ]*#define[ ]*__NR_\([A-Za-z0-9_]*\).*/UCLIBC_\1 __NR_\1/gp'
+) |
+$CC -E - |
+( echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" ; echo ;
+  echo "#ifndef _SYSCALL_H" ;
+  echo "# error \"Never use <bits/syscall.h> directly; include <sys/syscall.h> instead.\"" ;
+  echo "#endif" ; echo ;
+  sed -ne 's/^UCLIBC_\([A-Za-z0-9_]*\) *\([^ ]*\)/#define SYS_\1 \2\
+#define __NR_\1 \2\
+#define __STR_NR_\1 \"\2\"/gp'
+)
diff --git a/libc/sysdeps/linux/common/.cvsignore b/libc/sysdeps/linux/common/.cvsignore
deleted file mode 100644 (file)
index 73f1295..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-unified_syscall.h
-str_syscalls
-str_syscalls.c
-str_syscalls.h
index 1fea281c7a098b15a079358bdc4d6b7935a5b397..0b387587dd2ace7b89f82d6504e9df235f2bf37f 100644 (file)
@@ -34,16 +34,7 @@ MOBJ=$(shell ./list_syscalls.sh)
 
 OBJ=$(COBJS) $(MOBJ)
 
-UNIFIED_SYSCALL_HEADER = /dev/null
-STR_SYSCALLS =
-ifeq ($(UNIFIED_SYSCALL),true)
-       ifeq ($(TARGET_ARCH), i386)
-               UNIFIED_SYSCALL_HEADER = unified_syscall_i386.h
-               STR_SYSCALLS = str_syscalls
-       endif
-endif
-
-all: $(STR_SYSCALLS) unified_syscall.h $(OBJ) $(LIBC)
+all: $(STR_SYSCALLS) $(OBJ) $(LIBC)
 
 $(LIBC): ar-target
 
@@ -58,14 +49,6 @@ $(COBJS): %.o : %.c
        $(CC) $(CFLAGS) -c $< -o $@
        $(STRIPTOOL) -x -R .note -R .comment $*.o
 
-str_syscalls:
-       /bin/sh ./str_syscalls.sh > str_syscalls.c
-       gcc str_syscalls.c -o str_syscalls
-       ./str_syscalls > str_syscalls.h
-
-unified_syscall.h:
-       cat $(UNIFIED_SYSCALL_HEADER) > unified_syscall.h
-
 clean:
-       rm -f *.[oa] *~ core unified_syscall.h str_syscalls.[ch] str_syscalls
+       rm -f *.[oa] *~ core
 
index 223b909f559b86b965641eb709cf2cec9e64f1e2..93153c8b302c8d02a60c856f330358c49e15832c 100644 (file)
@@ -31,6 +31,9 @@
 
 #if defined(__i386__) || defined(__m68k__) || defined(__arm__)
 #define __NR___create_module  __NR_create_module
+#ifdef __STR_NR_create_module
+#define __STR_NR___create_module  __STR_NR_create_module
+#endif
 _syscall2(long, __create_module, const char *, name, size_t, size);
 /* By checking the value of errno, we know if we have been fooled 
  * by the syscall2 macro making a very high address look like a 
index 0b82f4973a1dee3032bb5535f71b9341231f2527..e7da59b63d6bd50dee1747ae17100fbd6ce5c582 100644 (file)
 #include <sys/types.h>
 #include <sys/syscall.h>
 
-#include "unified_syscall.h"
-
 //#define __NR_exit             1
 #ifdef L__exit
 /* Do not include unistd.h, so gcc doesn't whine about 
  * _exit returning.  It really doesn't return... */
 #define __NR__exit __NR_exit
+#ifdef __STR_NR_exit
+#define __STR_NR__exit __STR_NR_exit
+#endif
 _syscall1(void, _exit, int, status);
 #endif
 
@@ -67,6 +68,9 @@ _syscall3(ssize_t, write, int, fd, const __ptr_t, buf, size_t, count);
 #include <stdarg.h>
 #include <fcntl.h>
 #define __NR___open __NR_open
+#ifdef __STR_NR_open
+#define __STR_NR___open __STR_NR_open
+#endif
 _syscall3(int, __open, const char *, fn, int, flags, mode_t, mode);
 
 int open(const char *file, int oflag, ...)
@@ -223,6 +227,9 @@ _syscall1(int, stime, time_t *, t);
 #ifdef L___ptrace
 #include <sys/ptrace.h>
 #define __NR___ptrace __NR_ptrace
+#ifdef __STR_NR_ptrace
+#define __STR_NR___ptrace __STR_NR_ptrace
+#endif
 _syscall4(long, __ptrace, enum __ptrace_request, request, pid_t, pid,
                void*, addr, void*, data);
 #endif
@@ -381,6 +388,9 @@ _syscall0(gid_t, getgid);
 #include <stdarg.h>
 #include <sys/ioctl.h>
 #define __NR__ioctl __NR_ioctl
+#ifdef __STR_NR_ioctl
+#define __STR_NR__ioctl __STR_NR_ioctl
+#endif
 extern int _ioctl(int fd, int request, void *arg);
 
 _syscall3(int, _ioctl, int, fd, int, request, void *, arg);
@@ -403,6 +413,9 @@ int ioctl(int fd, unsigned long int request, ...)
 #include <stdarg.h>
 #include <fcntl.h>
 #define __NR__fcntl __NR_fcntl
+#ifdef __STR_NR_fcntl
+#define __STR_NR__fcntl __STR_NR_fcntl
+#endif
 extern int _fcntl(int fd, int cmd, long arg);
 
 _syscall3(int, _fcntl, int, fd, int, cmd, long, arg);
@@ -596,6 +609,9 @@ _syscall2(int, swapon, const char *, path, int, swapflags);
 //#define __NR_reboot           88
 #ifdef L__reboot
 #define __NR__reboot __NR_reboot
+#ifdef __STR_NR_reboot
+#define __STR_NR__reboot __STR_NR_reboot
+#endif
 extern int _reboot(int magic, int magic2, int flag);
 
 _syscall3(int, _reboot, int, magic, int, magic2, int, flag);
@@ -611,6 +627,9 @@ int reboot(int flag)
 //#define __NR_mmap             90
 #ifdef L__mmap
 #define __NR__mmap __NR_mmap
+#ifdef __STR_NR_mmap
+#define __STR_NR__mmap __STR_NR_mmap
+#endif
 #include <unistd.h>
 #include <sys/mman.h>
 extern __ptr_t _mmap(unsigned long *buffer);
@@ -712,6 +731,9 @@ _syscall2(int, socketcall, int, call, unsigned long *, args);
 #ifdef L__syslog
 #include <unistd.h>
 #define __NR__syslog           __NR_syslog
+#ifdef __STR_NR_syslog
+#define __STR_NR__syslog       __STR_NR_syslog
+#endif
 extern int _syslog(int type, char *buf, int len);
 
 _syscall3(int, _syslog, int, type, char *, buf, int, len);
@@ -741,6 +763,9 @@ _syscall2(int, getitimer, enum __itimer_which, which, struct itimerval *, value)
 #include <unistd.h>
 #include "statfix.h"
 #define __NR___stat    __NR_stat
+#ifdef __STR_NR_stat
+#define __STR_NR___stat        __STR_NR_stat
+#endif
 extern int __stat(const char *file_name, struct kernel_stat *buf);
 _syscall2(int, __stat, const char *, file_name, struct kernel_stat *, buf);
 
@@ -766,6 +791,9 @@ int stat(const char *file_name, struct libc_stat *buf)
 #include <unistd.h>
 #include "statfix.h"
 #define __NR___lstat   __NR_lstat
+#ifdef __STR_NR_lstat
+#define __STR_NR___lstat       __STR_NR_lstat
+#endif
 extern int __lstat(const char *file_name, struct kernel_stat *buf);
 _syscall2(int, __lstat, const char *, file_name, struct kernel_stat *, buf);
 
@@ -791,6 +819,9 @@ int lstat(const char *file_name, struct libc_stat *buf)
 #include <unistd.h>
 #include "statfix.h"
 #define __NR___fstat   __NR_fstat
+#ifdef __STR_NR_fstat
+#define __STR_NR___fstat       __STR_NR_fstat
+#endif
 extern int __fstat(int filedes, struct kernel_stat *buf);
 _syscall2(int, __fstat, int, filedes, struct kernel_stat *, buf);
 
@@ -858,6 +889,9 @@ _syscall1(int, sysinfo, struct sysinfo *, info);
 //#define __NR_ipc              117
 #ifdef L___ipc
 #define __NR___ipc __NR_ipc
+#ifdef __STR_NR_ipc
+#define __STR_NR___ipc __STR_NR_ipc
+#endif
 _syscall5(int, __ipc, unsigned int, call, int, first, int, second, int, third, void *, ptr);
 #endif
 
index bb7cb6e859e2761043394f5abd73f590ec368da6..a2c78aca79185392831f98a8a53372a5755bd7e8 100644 (file)
@@ -72,7 +72,7 @@ $(COBJS): %.o : %.c
        $(STRIPTOOL) -x -R .note -R .comment $*.o
 
 headers:
-       # No arch specific headers
+       @(TOPDIR=$(TOPDIR) CC=$(CC) /bin/sh $(TOPDIR)/extra/scripts/gen_bits_syscall_h.sh > bits/syscall.h ) 
 
 clean:
        rm -f *.[oa] *~ core
diff --git a/libc/sysdeps/linux/i386/bits/.cvsignore b/libc/sysdeps/linux/i386/bits/.cvsignore
new file mode 100644 (file)
index 0000000..4143547
--- /dev/null
@@ -0,0 +1 @@
+syscall.h
diff --git a/libc/sysdeps/linux/i386/bits/syscall.h b/libc/sysdeps/linux/i386/bits/syscall.h
deleted file mode 100644 (file)
index 740dc78..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Generated at libc build time from kernel syscall list.  */
-
-#ifndef _SYSCALL_H
-# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."
-#endif
-
-/* This syscall list was pulled from the Linux kernel source
- * code from the file linux-2.4.5/include/asm-i386/unistd.h */ 
-
-#define __NR_exit                1
-#define __NR_fork                2
-#define __NR_read                3
-#define __NR_write               4
-#define __NR_open                5
-#define __NR_close               6
-#define __NR_waitpid             7
-#define __NR_creat               8
-#define __NR_link                9
-#define __NR_unlink             10
-#define __NR_execve             11
-#define __NR_chdir              12
-#define __NR_time               13
-#define __NR_mknod              14
-#define __NR_chmod              15
-#define __NR_lchown             16
-#define __NR_break              17
-#define __NR_oldstat            18
-#define __NR_lseek              19
-#define __NR_getpid             20
-#define __NR_mount              21
-#define __NR_umount             22
-#define __NR_setuid             23
-#define __NR_getuid             24
-#define __NR_stime              25
-#define __NR_ptrace             26
-#define __NR_alarm              27
-#define __NR_oldfstat           28
-#define __NR_pause              29
-#define __NR_utime              30
-#define __NR_stty               31
-#define __NR_gtty               32
-#define __NR_access             33
-#define __NR_nice               34
-#define __NR_ftime              35
-#define __NR_sync               36
-#define __NR_kill               37
-#define __NR_rename             38
-#define __NR_mkdir              39
-#define __NR_rmdir              40
-#define __NR_dup                41
-#define __NR_pipe               42
-#define __NR_times              43
-#define __NR_prof               44
-#define __NR_brk                45
-#define __NR_setgid             46
-#define __NR_getgid             47
-#define __NR_signal             48
-#define __NR_geteuid            49
-#define __NR_getegid            50
-#define __NR_acct               51
-#define __NR_umount2            52
-#define __NR_lock               53
-#define __NR_ioctl              54
-#define __NR_fcntl              55
-#define __NR_mpx                56
-#define __NR_setpgid            57
-#define __NR_ulimit             58
-#define __NR_oldolduname        59
-#define __NR_umask              60
-#define __NR_chroot             61
-#define __NR_ustat              62
-#define __NR_dup2               63
-#define __NR_getppid            64
-#define __NR_getpgrp            65
-#define __NR_setsid             66
-#define __NR_sigaction          67
-#define __NR_sgetmask           68
-#define __NR_ssetmask           69
-#define __NR_setreuid           70
-#define __NR_setregid           71
-#define __NR_sigsuspend                 72
-#define __NR_sigpending                 73
-#define __NR_sethostname        74
-#define __NR_setrlimit          75
-#define __NR_getrlimit          76     /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage          77
-#define __NR_gettimeofday       78
-#define __NR_settimeofday       79
-#define __NR_getgroups          80
-#define __NR_setgroups          81
-#define __NR_select             82
-#define __NR_symlink            83
-#define __NR_oldlstat           84
-#define __NR_readlink           85
-#define __NR_uselib             86
-#define __NR_swapon             87
-#define __NR_reboot             88
-#define __NR_readdir            89
-#define __NR_mmap               90
-#define __NR_munmap             91
-#define __NR_truncate           92
-#define __NR_ftruncate          93
-#define __NR_fchmod             94
-#define __NR_fchown             95
-#define __NR_getpriority        96
-#define __NR_setpriority        97
-#define __NR_profil             98
-#define __NR_statfs             99
-#define __NR_fstatfs           100
-#define __NR_ioperm            101
-#define __NR_socketcall                102
-#define __NR_syslog            103
-#define __NR_setitimer         104
-#define __NR_getitimer         105
-#define __NR_stat              106
-#define __NR_lstat             107
-#define __NR_fstat             108
-#define __NR_olduname          109
-#define __NR_iopl              110
-#define __NR_vhangup           111
-#define __NR_idle              112
-#define __NR_vm86old           113
-#define __NR_wait4             114
-#define __NR_swapoff           115
-#define __NR_sysinfo           116
-#define __NR_ipc               117
-#define __NR_fsync             118
-#define __NR_sigreturn         119
-#define __NR_clone             120
-#define __NR_setdomainname     121
-#define __NR_uname             122
-#define __NR_modify_ldt                123
-#define __NR_adjtimex          124
-#define __NR_mprotect          125
-#define __NR_sigprocmask       126
-#define __NR_create_module     127
-#define __NR_init_module       128
-#define __NR_delete_module     129
-#define __NR_get_kernel_syms   130
-#define __NR_quotactl          131
-#define __NR_getpgid           132
-#define __NR_fchdir            133
-#define __NR_bdflush           134
-#define __NR_sysfs             135
-#define __NR_personality       136
-#define __NR_afs_syscall       137 /* Syscall for Andrew File System */
-#define __NR_setfsuid          138
-#define __NR_setfsgid          139
-#define __NR__llseek           140
-#define __NR_getdents          141
-#define __NR__newselect                142
-#define __NR_flock             143
-#define __NR_msync             144
-#define __NR_readv             145
-#define __NR_writev            146
-#define __NR_getsid            147
-#define __NR_fdatasync         148
-#define __NR__sysctl           149
-#define __NR_mlock             150
-#define __NR_munlock           151
-#define __NR_mlockall          152
-#define __NR_munlockall                153
-#define __NR_sched_setparam            154
-#define __NR_sched_getparam            155
-#define __NR_sched_setscheduler                156
-#define __NR_sched_getscheduler                157
-#define __NR_sched_yield               158
-#define __NR_sched_get_priority_max    159
-#define __NR_sched_get_priority_min    160
-#define __NR_sched_rr_get_interval     161
-#define __NR_nanosleep         162
-#define __NR_mremap            163
-#define __NR_setresuid         164
-#define __NR_getresuid         165
-#define __NR_vm86              166
-#define __NR_query_module      167
-#define __NR_poll              168
-#define __NR_nfsservctl                169
-#define __NR_setresgid         170
-#define __NR_getresgid         171
-#define __NR_prctl              172
-#define __NR_rt_sigreturn      173
-#define __NR_rt_sigaction      174
-#define __NR_rt_sigprocmask    175
-#define __NR_rt_sigpending     176
-#define __NR_rt_sigtimedwait   177
-#define __NR_rt_sigqueueinfo   178
-#define __NR_rt_sigsuspend     179
-#define __NR_pread             180
-#define __NR_pwrite            181
-#define __NR_chown             182
-#define __NR_getcwd            183
-#define __NR_capget            184
-#define __NR_capset            185
-#define __NR_sigaltstack       186
-#define __NR_sendfile          187
-#define __NR_getpmsg           188     /* some people actually want streams */
-#define __NR_putpmsg           189     /* some people actually want streams */
-#define __NR_vfork             190
-#define __NR_ugetrlimit                191     /* SuS compliant getrlimit */
-#define __NR_mmap2             192
-#define __NR_truncate64                193
-#define __NR_ftruncate64       194
-#define __NR_stat64            195
-#define __NR_lstat64           196
-#define __NR_fstat64           197
-#define __NR_lchown32          198
-#define __NR_getuid32          199
-#define __NR_getgid32          200
-#define __NR_geteuid32         201
-#define __NR_getegid32         202
-#define __NR_setreuid32                203
-#define __NR_setregid32                204
-#define __NR_getgroups32       205
-#define __NR_setgroups32       206
-#define __NR_fchown32          207
-#define __NR_setresuid32       208
-#define __NR_getresuid32       209
-#define __NR_setresgid32       210
-#define __NR_getresgid32       211
-#define __NR_chown32           212
-#define __NR_setuid32          213
-#define __NR_setgid32          214
-#define __NR_setfsuid32                215
-#define __NR_setfsgid32                216
-#define __NR_pivot_root                217
-#define __NR_mincore           218
-#define __NR_madvise           219
-#define __NR_madvise1          219     /* delete when C lib stub is removed */
-#define __NR_getdents64                220
-#define __NR_fcntl64           221
-
-
-/* Generated at libc build time from the above kernel syscall list.  */
-
-#define SYS_write __NR_write
-#define SYS_setrlimit __NR_setrlimit
-#define SYS_getdents __NR_getdents
-#define SYS_umount __NR_umount
-#define SYS_munlock __NR_munlock
-#define SYS_delete_module __NR_delete_module
-#define SYS_fstat __NR_fstat
-#define SYS_getpgid __NR_getpgid
-#define SYS_rt_sigaction __NR_rt_sigaction
-#define SYS_setfsgid __NR_setfsgid
-#define SYS_chroot __NR_chroot
-#define SYS_modify_ldt __NR_modify_ldt
-#define SYS_times __NR_times
-#define SYS_rt_sigsuspend __NR_rt_sigsuspend
-#define SYS_setpgid __NR_setpgid
-#define SYS_getpgrp __NR_getpgrp
-#define SYS_break __NR_break
-#define SYS_putpmsg __NR_putpmsg
-#define SYS_query_module __NR_query_module
-#define SYS_pause __NR_pause
-#define SYS_writev __NR_writev
-#define SYS_rename __NR_rename
-#define SYS_truncate __NR_truncate
-#define SYS_profil __NR_profil
-#define SYS_waitpid __NR_waitpid
-#define SYS_sigreturn __NR_sigreturn
-#define SYS_setresgid __NR_setresgid
-#define SYS_readdir __NR_readdir
-#define SYS_fsync __NR_fsync
-#define SYS_sigaltstack __NR_sigaltstack
-#define SYS_lstat __NR_lstat
-#define SYS_dup2 __NR_dup2
-#define SYS_getpmsg __NR_getpmsg
-#define SYS_clone __NR_clone
-#define SYS_getppid __NR_getppid
-#define SYS_umount2 __NR_umount2
-#define SYS_close __NR_close
-#define SYS_setgid __NR_setgid
-#define SYS_bdflush __NR_bdflush
-#define SYS_vm86old __NR_vm86old
-#define SYS_statfs __NR_statfs
-#define SYS_mount __NR_mount
-#define SYS_sgetmask __NR_sgetmask
-#define SYS_idle __NR_idle
-#define SYS_sigaction __NR_sigaction
-#define SYS_wait4 __NR_wait4
-#define SYS_fork __NR_fork
-#define SYS_setfsuid __NR_setfsuid
-#define SYS_settimeofday __NR_settimeofday
-#define SYS_pwrite __NR_pwrite
-#define SYS_ssetmask __NR_ssetmask
-#define SYS_rt_sigpending __NR_rt_sigpending
-#define SYS_oldfstat __NR_oldfstat
-#define SYS_afs_syscall __NR_afs_syscall
-#define SYS_exit __NR_exit
-#define SYS_sysinfo __NR_sysinfo
-#define SYS_symlink __NR_symlink
-#define SYS_ioctl __NR_ioctl
-#define SYS_ftruncate __NR_ftruncate
-#define SYS_sched_getparam __NR_sched_getparam
-#define SYS_creat __NR_creat
-#define SYS_lchown __NR_lchown
-#define SYS_setresuid __NR_setresuid
-#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval
-#define SYS_fcntl __NR_fcntl
-#define SYS_setsid __NR_setsid
-#define SYS_mprotect __NR_mprotect
-#define SYS_setuid __NR_setuid
-#define SYS_gtty __NR_gtty
-#define SYS_oldlstat __NR_oldlstat
-#define SYS_umask __NR_umask
-#define SYS_iopl __NR_iopl
-#define SYS_kill __NR_kill
-#define SYS_vfork __NR_vfork
-#define SYS_nanosleep __NR_nanosleep
-#define SYS_uname __NR_uname
-#define SYS_stime __NR_stime
-#define SYS_signal __NR_signal
-#define SYS_getitimer __NR_getitimer
-#define SYS_readv __NR_readv
-#define SYS_getcwd __NR_getcwd
-#define SYS_getpriority __NR_getpriority
-#define SYS_msync __NR_msync
-#define SYS_link __NR_link
-#define SYS_sched_setparam __NR_sched_setparam
-#define SYS_getgid __NR_getgid
-#define SYS__newselect __NR__newselect
-#define SYS_getrusage __NR_getrusage
-#define SYS_lock __NR_lock
-#define SYS__llseek __NR__llseek
-#define SYS_sched_yield __NR_sched_yield
-#define SYS_nice __NR_nice
-#define SYS_mmap __NR_mmap
-#define SYS_get_kernel_syms __NR_get_kernel_syms
-#define SYS_setgroups __NR_setgroups
-#define SYS_ulimit __NR_ulimit
-#define SYS_munmap __NR_munmap
-#define SYS_quotactl __NR_quotactl
-#define SYS_getrlimit __NR_getrlimit
-#define SYS_brk __NR_brk
-#define SYS_sched_getscheduler __NR_sched_getscheduler
-#define SYS_personality __NR_personality
-#define SYS_getpid __NR_getpid
-#define SYS_vhangup __NR_vhangup
-#define SYS_ioperm __NR_ioperm
-#define SYS_mremap __NR_mremap
-#define SYS_ptrace __NR_ptrace
-#define SYS_dup __NR_dup
-#define SYS_getsid __NR_getsid
-#define SYS_getegid __NR_getegid
-#define SYS_uselib __NR_uselib
-#define SYS_rt_sigprocmask __NR_rt_sigprocmask
-#define SYS_olduname __NR_olduname
-#define SYS_getuid __NR_getuid
-#define SYS_init_module __NR_init_module
-#define SYS_ipc __NR_ipc
-#define SYS_capget __NR_capget
-#define SYS_getresgid __NR_getresgid
-#define SYS_pipe __NR_pipe
-#define SYS_read __NR_read
-#define SYS_open __NR_open
-#define SYS_setdomainname __NR_setdomainname
-#define SYS_setregid __NR_setregid
-#define SYS_mpx __NR_mpx
-#define SYS_alarm __NR_alarm
-#define SYS_pread __NR_pread
-#define SYS_poll __NR_poll
-#define SYS_flock __NR_flock
-#define SYS_sigsuspend __NR_sigsuspend
-#define SYS_fdatasync __NR_fdatasync
-#define SYS_prctl __NR_prctl
-#define SYS_prof __NR_prof
-#define SYS_sysfs __NR_sysfs
-#define SYS_sethostname __NR_sethostname
-#define SYS_geteuid __NR_geteuid
-#define SYS_swapon __NR_swapon
-#define SYS_capset __NR_capset
-#define SYS_vm86 __NR_vm86
-#define SYS_create_module __NR_create_module
-#define SYS_execve __NR_execve
-#define SYS_utime __NR_utime
-#define SYS_reboot __NR_reboot
-#define SYS_socketcall __NR_socketcall
-#define SYS_fchdir __NR_fchdir
-#define SYS_getresuid __NR_getresuid
-#define SYS_sendfile __NR_sendfile
-#define SYS_time __NR_time
-#define SYS_setreuid __NR_setreuid
-#define SYS_select __NR_select
-#define SYS_ustat __NR_ustat
-#define SYS_mkdir __NR_mkdir
-#define SYS_rmdir __NR_rmdir
-#define SYS_adjtimex __NR_adjtimex
-#define SYS_acct __NR_acct
-#define SYS_sched_setscheduler __NR_sched_setscheduler
-#define SYS_mlockall __NR_mlockall
-#define SYS_fstatfs __NR_fstatfs
-#define SYS_stat __NR_stat
-#define SYS_sigpending __NR_sigpending
-#define SYS_chdir __NR_chdir
-#define SYS_swapoff __NR_swapoff
-#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait
-#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo
-#define SYS_syslog __NR_syslog
-#define SYS_fchmod __NR_fchmod
-#define SYS_nfsservctl __NR_nfsservctl
-#define SYS_oldstat __NR_oldstat
-#define SYS_readlink __NR_readlink
-#define SYS_munlockall __NR_munlockall
-#define SYS_stty __NR_stty
-#define SYS_sync __NR_sync
-#define SYS_setitimer __NR_setitimer
-#define SYS_fchown __NR_fchown
-#define SYS_access __NR_access
-#define SYS_sched_get_priority_max __NR_sched_get_priority_max
-#define SYS_gettimeofday __NR_gettimeofday
-#define SYS_mknod __NR_mknod
-#define SYS_sched_get_priority_min __NR_sched_get_priority_min
-#define SYS_oldolduname __NR_oldolduname
-#define SYS_getgroups __NR_getgroups
-#define SYS_chmod __NR_chmod
-#define SYS_mlock __NR_mlock
-#define SYS_unlink __NR_unlink
-#define SYS__sysctl __NR__sysctl
-#define SYS_sigprocmask __NR_sigprocmask
-#define SYS_rt_sigreturn __NR_rt_sigreturn
-#define SYS_lseek __NR_lseek
-#define SYS_setpriority __NR_setpriority
-#define SYS_ftime __NR_ftime
-#define SYS_chown __NR_chown
index ed5fad805f634f2a846d674ee768a66784eed5b5..940e9db5000d476cbd828931773c8ab8cc0b848b 100644 (file)
@@ -4,6 +4,10 @@
  * a difference.   Regardless, including asm/unistd.h is hereby officially
  * forbidden.  Don't do it.  It is bad for you.  */ 
 
+#include <features.h>
+
+#ifndef __UCLIBC_USE_UNIFIED_SYSCALL__
+
 #undef __syscall_return
 #define __syscall_return(type, res) \
 do { \
@@ -157,3 +161,38 @@ __syscall_return(type,__res); \
 #endif /* __PIC__ */
 
 
+#else
+
+#define unified_syscall_body(name) \
+__asm__ ( \
+".text\n.align 4\n.global "###name"\n.type "###name",@function\n" \
+#name":\nmovb $"__STR_NR_##name \
+",%al;\n jmp __uClibc_syscall\n.Lfe1"###name":\n.size "###name \
+",.Lfe1"###name"-"###name \
+)
+
+#undef _syscall0
+#define _syscall0(type,name) \
+unified_syscall_body(name)
+
+#undef _syscall1
+#define _syscall1(type,name,type1,arg1) \
+unified_syscall_body(name)
+
+#undef _syscall2
+#define _syscall2(type,name,type1,arg1,type2,arg2) \
+unified_syscall_body(name)
+
+#undef _syscall3
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
+unified_syscall_body(name)
+
+#undef _syscall4
+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
+unified_syscall_body(name)
+
+#undef _syscall5
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
+unified_syscall_body(name)
+
+#endif
This page took 0.047501 seconds and 4 git commands to generate.