about summary refs log tree commit diff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv')
-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