summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-02-18 05:48:08 +0000
committerEric Andersen <andersen@codepoet.org>2003-02-18 05:48:08 +0000
commit5efeef3b6d2b22a285d1ba3b5016944bb65eb7b5 (patch)
tree71c4bd3c79fed683693ddbd49e34f8e042b97718 /libc/sysdeps/linux/common
parent1bbb166142db8bbe98283d7601bac1701cff6ad3 (diff)
Fixup ioctl so we can special case powerpc silliness
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r--libc/sysdeps/linux/common/Makefile8
-rw-r--r--libc/sysdeps/linux/common/ioctl.c18
-rw-r--r--libc/sysdeps/linux/common/syscalls.c25
3 files changed, 30 insertions, 21 deletions
diff --git a/libc/sysdeps/linux/common/Makefile b/libc/sysdeps/linux/common/Makefile
index c616ad8b2..5b9717f2b 100644
--- a/libc/sysdeps/linux/common/Makefile
+++ b/libc/sysdeps/linux/common/Makefile
@@ -19,11 +19,11 @@
TOPDIR=../../../../
include $(TOPDIR)Rules.mak
-CSRC= waitpid.c getdnnm.c gethstnm.c getcwd.c \
+CSRC= waitpid.c getdnnm.c gethstnm.c getcwd.c ptrace.c \
mkfifo.c setegid.c wait.c getpagesize.c seteuid.c \
- wait3.c setpgrp.c getdtablesize.c create_module.c ptrace.c \
- cmsg_nxthdr.c longjmp.c open64.c ftruncate64.c \
- truncate64.c getrlimit64.c setrlimit64.c creat64.c mmap64.c \
+ wait3.c setpgrp.c getdtablesize.c create_module.c \
+ cmsg_nxthdr.c longjmp.c open64.c ftruncate64.c mmap64.c \
+ truncate64.c getrlimit64.c setrlimit64.c creat64.c \
llseek.c pread_write.c _exit.c sync.c getdirname.c \
sendfile64.c xstatconv.c getdents.c getdents64.c
ifneq ($(strip $(EXCLUDE_BRK)),y)
diff --git a/libc/sysdeps/linux/common/ioctl.c b/libc/sysdeps/linux/common/ioctl.c
new file mode 100644
index 000000000..d3cc617ac
--- /dev/null
+++ b/libc/sysdeps/linux/common/ioctl.c
@@ -0,0 +1,18 @@
+#include <stdarg.h>
+#include <sys/ioctl.h>
+
+extern int __syscall_ioctl(int fd, int request, void *arg);
+
+/* powerpc has its own special version... */
+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 __syscall_ioctl(fd, request, arg);
+}
+
diff --git a/libc/sysdeps/linux/common/syscalls.c b/libc/sysdeps/linux/common/syscalls.c
index 23690e4b7..63cef235b 100644
--- a/libc/sysdeps/linux/common/syscalls.c
+++ b/libc/sysdeps/linux/common/syscalls.c
@@ -575,25 +575,16 @@ _syscall1(int, acct, const char *, filename);
//#define __NR_lock 53
//#define __NR_ioctl 54
-#ifdef L__ioctl
+#ifdef L___syscall_ioctl
#include <stdarg.h>
#include <sys/ioctl.h>
-#define __NR__ioctl __NR_ioctl
-extern int _ioctl(int fd, int request, void *arg);
-
-_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);
-}
+#define __NR___syscall_ioctl __NR_ioctl
+extern int __syscall_ioctl(int fd, int request, void *arg);
+_syscall3(int, __syscall_ioctl, int, fd, int, request, void *, arg);
+#if !defined (__powerpc__)
+#include "ioctl.c"
+/* Also see ioctl.c and powerpc/ioctl.c */
+#endif
#endif
//#define __NR_fcntl 55