summaryrefslogtreecommitdiff
path: root/sysdeps/unix
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/Makefile23
-rw-r--r--sysdeps/unix/sysv/linux/reboot.c28
-rw-r--r--sysdeps/unix/sysv/linux/sys/reboot.h43
-rw-r--r--sysdeps/unix/sysv/linux/syscall.h10
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list2
5 files changed, 95 insertions, 11 deletions
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index d25e0525ca..8c9fcfe934 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -16,8 +16,29 @@ endif
ifeq ($(subdir), misc)
sysdep_routines += mount umount xmknod s_ptrace s_sysctl sysctl llseek \
-setfsgid setfsuid sysinfo uselib
+setfsgid setfsuid sysinfo uselib s_reboot
headers += sys/mount.h sys/sysinfo.h sys/acct.h sys/sysctl.h
+
+install-others += $(includedir)/sys/syscall.h
+
+$(includedir)/sys/syscall.h::
+ @rm -f $(objpfx)syscall.h $(objpfx)syscall.sed
+ @(os=`uname -sr`; \
+ echo -e '1i\\\n#ifndef _SYS_SYSCALL_H\\'; \
+ echo -e '#define _SYS_SYSCALL_H\t1\\\n\\'; \
+ echo -e -n '/* This file is automatically generated as part of '; \
+ echo -e 'GNU libc-$(version)\\'; \
+ echo -e " on a system running $$os. */\\"; echo; \
+ echo -e -n 's/#define __NR_\\([A-Za-z0-9_]*\\)[ \t]*__NR_\\(.*\\)/';\
+ echo -e '#define SYS_\\1 SYS_\\2/p'; \
+ echo -e -n 's/#define __NR_\\([A-Za-z0-9_]*\\)[ \t]*\\(.*\\)/';\
+ echo -e '#define SYS_\\1 \\2/p'; \
+ echo -e '$$i\\\n\\\n#endif\t/* sys/syscall.h */\nd') \
+ > $(objpfx)syscall.sed
+ set -- `echo '#include <asm/unistd.h>'|$(CC) -M -E -`; \
+ sed -f $(objpfx)syscall.sed $$2 > $(objpfx)syscall.h
+ $(INSTALL_DATA) $(objpfx)syscall.h $@
+ rm -f $(objpfx)syscall.h $(objpfx)syscall.sed
endif
ifeq ($(subdir), time)
diff --git a/sysdeps/unix/sysv/linux/reboot.c b/sysdeps/unix/sysv/linux/reboot.c
new file mode 100644
index 0000000000..ecda522444
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/reboot.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library 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.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#include <unistd.h>
+
+extern int __syscall_reboot (int magic, int magic_too, int flag);
+
+/* Call kernel with additional two arguments the syscall requires. */
+int
+reboot (int howto)
+{
+ return __syscall_reboot (0xfee1dead, 672274793, howto);
+}
diff --git a/sysdeps/unix/sysv/linux/sys/reboot.h b/sysdeps/unix/sysv/linux/sys/reboot.h
new file mode 100644
index 0000000000..a7b86fa804
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sys/reboot.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 1996 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library 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.
+
+The GNU C Library 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
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This file should define RB_* macros to be used as flag
+ bits in the argument to the `reboot' system call. */
+
+#ifndef _SYS_REBOOT_H
+
+#define _SYS_REBOOT_H 1
+#include <features.h>
+
+/* Perform a hard reset now. */
+#define RB_AUTOBOOT 0x01234567
+
+/* Halt the system. */
+#define RB_HALT_SYSTEM 0xcdef0123
+
+/* Enable reboot using Ctrl-Alt-Delete keystroke. */
+#define RB_ENABLE_CAD 0x89abcdef
+
+/* Disable reboot using Ctrl-Alt-Delete keystroke. */
+#define RB_DISABLE_CAD 0
+
+
+/* Reboot or halt the system. */
+extern int reboot __P ((int __howto));
+
+#endif /* sys/reboot.h */
diff --git a/sysdeps/unix/sysv/linux/syscall.h b/sysdeps/unix/sysv/linux/syscall.h
index efe285c1fe..62fca57d70 100644
--- a/sysdeps/unix/sysv/linux/syscall.h
+++ b/sysdeps/unix/sysv/linux/syscall.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -24,12 +24,4 @@ Cambridge, MA 02139, USA. */
from the kernel sources. */
#include <asm/unistd.h>
-/* Among the system calls defined there are
- _setdomainname
- _fchdir
- _readv
- _writev
- (This is a hack for the autoconf mechanism. Don't change a single
- character, esp white spaces, unless you know what you are doing!) */
-
#endif
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 019d746a73..f401bc8c60 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -23,7 +23,7 @@ munlockall - munlockall 0 __munlockall munlockall
nanosleep - nanosleep 2 nanosleep
personality init-first personality 1 __personality personality
pipe - pipe 1 __pipe pipe
-reboot - reboot 3 reboot
+s_reboot - reboot 3 __syscall_reboot
s_getpriority getpriority getpriority 2 __syscall_getpriority
s_ptrace ptrace ptrace 4 __syscall_ptrace
s_sigsuspend sigsuspend sigsuspend 3 __syscall_sigsuspend