From 0e3426bbcf2ff61d06d580fc9362fde79953a281 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 8 May 1996 02:07:47 +0000 Subject: Tue May 7 19:00:01 1996 Roland McGrath * string/argz-extract.c: Remove const from decl. * string/argz.h: Here too. * Makeconfig (version.mk): Fix regexp in sed cmd. Depend on $(..)Makeconfig. * GMP code updated from gmp-2.0 release. * stdlib/Makefile (mpn-routines): Removed add_1, added inlines. * sysdeps/generic/add_1.c: File removed. * stdlib/strtod.c: mp_limb is now mp_limb_t. * stdlib/fpioconst.c, stdlib/fpioconst.h: Likewise. * stdio-common/_itoa.c: Likewise. * stdio-common/printf_fp.c: Likewise. Don't include ansidecl.h. * sysdeps/mach/hurd/getcwd.c: Use io_identity instead of io_stat. * shlib-versions: New file. * Makerules (soversions.mk): New target, include file generated from shlib-versions. Moved shared library rules before installation rules. Rewrote shared library installation rules for versioned libraries. * math/Makefile (libm.so-version): Variable removed. * sysdeps/mach/hurd/i386/exc2signal.c: Use struct hurd_signal_detail. * hurd/report-wait.c (_S_msg_describe_ports): New function. * configure.in: Add AC_PROG_LN_S check. * config.make.in (LN_S): New variable. Sun May 5 03:10:44 1996 Ulrich Drepper * misc/efgcvt_r.c (ecvt_r): Work aroung gcc bug. gcc does not know about weak aliases now and optimizes necessary `if' statement away. * posix/unistd.h: Add swapoff prototype. * sysdeps/generic/confname.h: Add even more POSIX.4 symbols. * sysdeps/posix/fpathconf.c (__fpathconf): Get information for _PC_PATH_MAX from fstatfs function if available. * sysdeps/posix/sysconf.c: Add code to handle _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, and _SC_TIMER_MAX. * sysdeps/unix/sysv/sysv4/sysconf.c: Ditto. * sysdeps/stub/swapoff.c: New file. Stub version for swapoff function. * sysdeps/unix/syscalls.list: Add swapoff. * sysdeps/unix/sysv/linux/Dist: Add sys/acct.h. * sysdeps/unix/sysv/linux/Makefile [$(subdir) == misc] (sysdep_routines): Add mount, umount, llseek, setfsgid, setfsuid, sysinfo, and uselib. (headers): Add sys/sysinfo.h. * sysdeps/unix/sysv/linux/gethostid.c: Prevent warning. * sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) == misc] (sysdep_routines): Add ioperm, iopl, and vm86. (headers): Add sys/perm.h and sys/vm86.h. * sysdeps/unix/sysv/linux/i386/sys/perm.h: New file. Contains prototypes for iopl and ioperm. * sysdeps/unix/sysv/linux/i386/sys/vm86.h: New file. Contains prototype for vm86. * sysdeps/unix/sysv/linux/i386/syscalls.list: New file. Add vm86 system call. * sysdeps/unix/sysv/linux/sys/acct.h: New file. Contains prototypes for acct function. * sysdeps/unix/sysv/linux/sys/socket.h: Provide real header file with prototypes. * sysdeps/unix/sysv/linux/sys/sysinfo.h: New file. Contains prototype for sysinfo function. * sysdeps/unix/sysv/linux/syscalls.list: Add flock, ioperm, iopl, llseek, setfsgid, setfsuid, sysinfo, and uselib. * sysdeps/unix/sysv/linux/sysconf.c: Instead of duplicating posix/sysconf.c now only handle cases different to that implementation. Tue May 7 15:08:19 1996 Miles Bader * stdio/linewrap.c (__line_wrap_output): Renamed from lwoutput (all references changed). Now exported. * stdio/linewrap.c (struct data): Type deleted (moved to linewrap.h). (wrap_stream, unwrap_stream, lwclose, lwfileno, lwoutput, line_wrap_stream, line_unwrap_stream): Use struct line_wrap_data instead of struct data. (lwoutput, line_wrap_stream, line_unwrap_stream): Rename various occurences of `wrap' and `wrapmargin' to `wmargin'. (line_wrapped, line_wrap_lmargin, line_wrap_set_lmargin, line_wrap_rmargin, line_wrap_set_rmargin, line_wrap_wmargin, line_wrap_set_wmargin, line_wrap_point): New functions. * stdio/linewrap.h: New file. * stdio/Makefile (headers): Add linewrap.h. Tue May 7 14:19:12 1996 Roland McGrath * sysdeps/unix/sysv/linux/i386/Makefile: File removed. * stdio/stdio.h: Remove line_wrap_stream, line_unwap_stream decls. * sysdeps/unix/sysv/linux/schedbits.h: New file. Tue May 7 13:47:02 1996 Miles Bader * stdio/linewrap.c (struct data): Make margin fields not-pointers. (lwoutput): Adjust uses acordingly. * sysdeps/mach/hurd/fdatasync.c: New file. * sysdeps/mach/hurd/fsync.c: Pass new flag to file_sync. * sysdeps/mach/hurd/xmknod.c: Pass new flag to dir_link. * sysdeps/mach/hurd/symlink.c: Likewise. * sysdeps/mach/hurd/link.c: Likewise. * sysdeps/mach/hurd/bind.c: Likewise. * hurd/hurdsig.c (write_corefile): Likewise. * hurd/hurdsig.c (write_corefile): Pass cttyid port to crash server. * sysdeps/mach/hurd/fpathconf.c: RPC takes int pointer, not long int. * sysdeps/mach/hurd/_exit.c (_hurd_exit): Pass sigcode arg to proc_mark_exit. * sysdeps/mach/hurd/dl-sysdep.c (_exit): Likewise. * sysdeps/mach/hurd/wait4.c: Pass sigcode arg to proc_wait. * sysdeps/mach/hurd/rename.c: Pass new flag to dir_rename. * hurd/hurdfault.c (_hurdsig_fault_catch_exception_raise): Use struct hurd_signal_detail. * hurd/catch-exc.c (_S_catch_exception_raise): Likewise. * hurd/hurd-raise.c (_hurd_raise_signal): Likewise. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Likewise. * sysdeps/mach/hurd/setitimer.c (restart_itimer): Likewise. * hurd/hurd/signal.h: Fix _hurd_exception2signal prototype. * hurd/hurdsig.c (write_corefile): Take const struct hurd_signal_detail * arg. Pass all details to crash_dump_task. (_hurd_internal_post_signal): Pass DETAIL to write_corefile. (_hurd_internal_post_signal: suspend): Pass code and error to proc_mark_stop. * hurd/hurdprio.c (_hurd_priority_which_map): Pass flags arg to proc_getprocinfo by reference. --- sysdeps/unix/sysv/linux/Dist | 1 + sysdeps/unix/sysv/linux/Makefile | 5 +- sysdeps/unix/sysv/linux/gethostid.c | 6 +- sysdeps/unix/sysv/linux/i386/Makefile | 8 +- sysdeps/unix/sysv/linux/i386/sys/perm.h | 36 ++++ sysdeps/unix/sysv/linux/i386/sys/vm86.h | 34 ++++ sysdeps/unix/sysv/linux/i386/syscalls.list | 3 + sysdeps/unix/sysv/linux/schedbits.h | 1 + sysdeps/unix/sysv/linux/sys/acct.h | 34 ++++ sysdeps/unix/sysv/linux/sys/socket.h | 168 +++++++++++++++++ sysdeps/unix/sysv/linux/sys/sysinfo.h | 30 +++ sysdeps/unix/sysv/linux/syscalls.list | 10 +- sysdeps/unix/sysv/linux/sysconf.c | 294 ++--------------------------- sysdeps/unix/sysv/sysv4/sysconf.c | 77 ++++++++ 14 files changed, 417 insertions(+), 290 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/i386/sys/perm.h create mode 100644 sysdeps/unix/sysv/linux/i386/sys/vm86.h create mode 100644 sysdeps/unix/sysv/linux/i386/syscalls.list create mode 100644 sysdeps/unix/sysv/linux/schedbits.h create mode 100644 sysdeps/unix/sysv/linux/sys/acct.h create mode 100644 sysdeps/unix/sysv/linux/sys/sysinfo.h (limited to 'sysdeps/unix/sysv') diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index e6505c0ed9..8c8be26b92 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -1,3 +1,4 @@ +sys/acct.h sys/socketcall.h sys/sysctl.h sys/timex.h diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 4d484ab092..53837ab53f 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -15,8 +15,9 @@ sysdep_routines += fxstat lxstat xstat endif ifeq ($(subdir), misc) -sysdep_routines += xmknod s_ptrace s_sysctl sysctl -headers += sys/mount.h +sysdep_routines += mount umount xmknod s_ptrace s_sysctl sysctl llseek \ +setfsgid setfsuid sysinfo uselib +headers += sys/mount.h sys/sysinfo.h endif ifeq ($(subdir), time) diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c index 94f4a1ece7..5fd25ba2e7 100644 --- a/sysdeps/unix/sysv/linux/gethostid.c +++ b/sysdeps/unix/sysv/linux/gethostid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. 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 @@ -80,14 +80,14 @@ gethostid () /* This also fails. Return and arbitrary value. */ return 0; - /* To get the IP address we need to knoe the host name. */ + /* To get the IP address we need to know the host name. */ hp = gethostbyname (hostname); if (hp == NULL) return 0; in.s_addr = 0; memcpy (&in, hp->h_addr, - sizeof (in) < hp->h_length ? sizeof (in) : hp->h_length); + (int) sizeof (in) < hp->h_length ? sizeof (in) : hp->h_length); /* For the return value to be not exactly the IP address we do some bit fiddling. */ diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index 19eb60fb6d..bd345b6fc6 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -1,4 +1,4 @@ -# Set the shared library version numbers for Linux/i386. - -libc.so-version = .6 -libm.so-version = .6 +ifeq ($(subdir), misc) +sysdep_routines += ioperm iopl vm86 +headers += sys/perm.h sys/vm86.h +endif diff --git a/sysdeps/unix/sysv/linux/i386/sys/perm.h b/sysdeps/unix/sysv/linux/i386/sys/perm.h new file mode 100644 index 0000000000..1ae5f2e1db --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/sys/perm.h @@ -0,0 +1,36 @@ +/* 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. */ + +#ifndef _SYS_PERM_H + +#define _SYS_PERM_H 1 +#include + +__BEGIN_DECLS + +/* Set port input/output permissions. */ +extern int ioperm __P ((unsigned long __from, unsigned long __num, + int __turn_on)); + + +/* Change I/O privilege level. */ +extern int iopl __P ((int __level)); + +__END_DECLS + +#endif /* sys/perm.h */ diff --git a/sysdeps/unix/sysv/linux/i386/sys/vm86.h b/sysdeps/unix/sysv/linux/i386/sys/vm86.h new file mode 100644 index 0000000000..32e0055ce8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/sys/vm86.h @@ -0,0 +1,34 @@ +/* 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. */ + +#ifndef _SYS_VM86_H + +#define _SYS_VM86_H 1 +#include + +/* Get constants and data types from kernel header file. */ +#include + +__BEGIN_DECLS + +/* Enter virtual 8086 mode. */ +extern int vm86 __P ((struct vm86_struct *__info)); + +__END_DECLS + +#endif /* sys/vm86.h */ diff --git a/sysdeps/unix/sysv/linux/i386/syscalls.list b/sysdeps/unix/sysv/linux/i386/syscalls.list new file mode 100644 index 0000000000..63dd0bd8e2 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/syscalls.list @@ -0,0 +1,3 @@ +# File name Caller Syscall name # args Strong name Weak names + +vm86 - vm86 1 __vm86 vm86 diff --git a/sysdeps/unix/sysv/linux/schedbits.h b/sysdeps/unix/sysv/linux/schedbits.h new file mode 100644 index 0000000000..7b887aab25 --- /dev/null +++ b/sysdeps/unix/sysv/linux/schedbits.h @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/sys/acct.h b/sysdeps/unix/sysv/linux/sys/acct.h new file mode 100644 index 0000000000..adb2da7a99 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sys/acct.h @@ -0,0 +1,34 @@ +/* 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. */ + +#ifndef _SYS_ACCT_H + +#define _SYS_ACCT_H 1 +#include + +/* Get needed constants. */ +#include + +__BEGIN_DECLS + +/* Switch process accounting on and off. */ +extern int acct __P ((__const char *__filename)); + +__END_DECLS + +#endif /* sys/acct.h */ diff --git a/sysdeps/unix/sysv/linux/sys/socket.h b/sysdeps/unix/sysv/linux/sys/socket.h index cd6c58bd32..a680d5fb29 100644 --- a/sysdeps/unix/sysv/linux/sys/socket.h +++ b/sysdeps/unix/sysv/linux/sys/socket.h @@ -1 +1,169 @@ +/* Copyright (C) 1991, 92, 94, 95, 96 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., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#ifndef _SYS_SOCKET_H + +#define _SYS_SOCKET_H 1 +#include + +__BEGIN_DECLS + +#define __need_size_t +#include + + +/* Get Linux specific constants and data types. */ #include + +/* This is the type we use for generic socket address arguments. + + With GCC 2.7 and later, the funky union causes redeclarations or uses with + any of the listed types to be allowed without complaint. */ +#if (!defined (__GNUC__) || __GNUC__ < 2 || \ + (__GNUC__ == 2 && __GNUC_MINOR__ < 7)) +#define __SOCKADDR_ARG struct sockaddr * +#define __CONST_SOCKADDR_ARG __const struct sockaddr * +#else +/* Add more `struct sockaddr_AF' types here as necessary. + These are all the ones I found on NetBSD and Linux. */ +#define __SOCKADDR_ALLTYPES \ + __SOCKADDR_ONETYPE (sockaddr) \ + __SOCKADDR_ONETYPE (sockaddr_at) \ + __SOCKADDR_ONETYPE (sockaddr_ax25) \ + __SOCKADDR_ONETYPE (sockaddr_dl) \ + __SOCKADDR_ONETYPE (sockaddr_eon) \ + __SOCKADDR_ONETYPE (sockaddr_in) \ + __SOCKADDR_ONETYPE (sockaddr_in6) \ + __SOCKADDR_ONETYPE (sockaddr_inarp) \ + __SOCKADDR_ONETYPE (sockaddr_ipx) \ + __SOCKADDR_ONETYPE (sockaddr_iso) \ + __SOCKADDR_ONETYPE (sockaddr_ns) \ + __SOCKADDR_ONETYPE (sockaddr_un) \ + __SOCKADDR_ONETYPE (sockaddr_x25) + +#define __SOCKADDR_ONETYPE(type) struct type *__##type##__; +typedef union { __SOCKADDR_ALLTYPES + } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); +#undef __SOCKADDR_ONETYPE +#define __SOCKADDR_ONETYPE(type) __const struct type *__##type##__; +typedef union { __SOCKADDR_ALLTYPES + } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); +#undef __SOCKADDR_ONETYPE +#endif + + +/* Create a new socket of type TYPE in domain DOMAIN, using + protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. + Returns a file descriptor for the new socket, or -1 for errors. */ +extern int socket __P ((int __domain, int __type, int __protocol)); + +/* Create two new sockets, of type TYPE in domain DOMAIN and using + protocol PROTOCOL, which are connected to each other, and put file + descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, + one will be chosen automatically. Returns 0 on success, -1 for errors. */ +extern int socketpair __P ((int __domain, int __type, int __protocol, + int __fds[2])); + +/* Give the socket FD the local address ADDR (which is LEN bytes long). */ +extern int bind __P ((int __fd, __CONST_SOCKADDR_ARG __addr, size_t __len)); + +/* Put the local address of FD into *ADDR and its length in *LEN. */ +extern int getsockname __P ((int __fd, __SOCKADDR_ARG __addr, + size_t *__len)); + +/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). + For connectionless socket types, just set the default address to send to + and the only address from which to accept transmissions. + Return 0 on success, -1 for errors. */ +extern int connect __P ((int __fd, + __CONST_SOCKADDR_ARG __addr, size_t __len)); + +/* Put the address of the peer connected to socket FD into *ADDR + (which is *LEN bytes long), and its actual length into *LEN. */ +extern int getpeername __P ((int __fd, __SOCKADDR_ARG __addr, + size_t *__len)); + + +/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */ +extern int send __P ((int __fd, __ptr_t __buf, size_t __n, int __flags)); + +/* Read N bytes into BUF from socket FD. + Returns the number read or -1 for errors. */ +extern int recv __P ((int __fd, __ptr_t __buf, size_t __n, int __flags)); + +/* Send N bytes of BUF on socket FD to peer at address ADDR (which is + ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ +extern int sendto __P ((int __fd, __ptr_t __buf, size_t __n, int __flags, + __CONST_SOCKADDR_ARG __addr, size_t __addr_len)); + +/* Read N bytes into BUF through socket FD. + If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of + the sender, and store the actual size of the address in *ADDR_LEN. + Returns the number of bytes read or -1 for errors. */ +extern int recvfrom __P ((int __fd, __ptr_t __buf, size_t __n, int __flags, + __SOCKADDR_ARG __addr, size_t *__addr_len)); + + +/* Send a message described MESSAGE on socket FD. + Returns the number of bytes sent, or -1 for errors. */ +extern int sendmsg __P ((int __fd, __const struct msghdr *__message, + int __flags)); + +/* Receive a message as described by MESSAGE from socket FD. + Returns the number of bytes read or -1 for errors. */ +extern int recvmsg __P ((int __fd, struct msghdr *__message, int __flags)); + + +/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL + into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's + actual length. Returns 0 on success, -1 for errors. */ +extern int getsockopt __P ((int __fd, int __level, int __optname, + __ptr_t __optval, size_t *__optlen)); + +/* Set socket FD's option OPTNAME at protocol level LEVEL + to *OPTVAL (which is OPTLEN bytes long). + Returns 0 on success, -1 for errors. */ +extern int setsockopt __P ((int __fd, int __level, int __optname, + __ptr_t __optval, size_t __optlen)); + + +/* Prepare to accept connections on socket FD. + N connection requests will be queued before further requests are refused. + Returns 0 on success, -1 for errors. */ +extern int listen __P ((int __fd, unsigned int __n)); + +/* Await a connection on socket FD. + When a connection arrives, open a new socket to communicate with it, + set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting + peer and *ADDR_LEN to the address's actual length, and return the + new socket's descriptor, or -1 for errors. */ +extern int accept __P ((int __fd, __SOCKADDR_ARG __addr, + size_t *__addr_len)); + +/* Shut down all or part of the connection open on socket FD. + HOW determines what to shut down: + 0 = No more receptions; + 1 = No more transmissions; + 2 = No more receptions or transmissions. + Returns 0 on success, -1 for errors. */ +extern int shutdown __P ((int __fd, int __how)); + + +__END_DECLS + +#endif /* sys/socket.h */ diff --git a/sysdeps/unix/sysv/linux/sys/sysinfo.h b/sysdeps/unix/sysv/linux/sys/sysinfo.h new file mode 100644 index 0000000000..c05da05b3d --- /dev/null +++ b/sysdeps/unix/sysv/linux/sys/sysinfo.h @@ -0,0 +1,30 @@ +/* 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. */ + +#ifndef _SYS_SYSINFO_H + +#define _SYS_SYSINFO_H 1 +#include + +/* Get sysinfo structure from kernel header. */ +#include + +/* Returns information on overall system statistics. */ +extern int sysinfo __P ((struct sysinfo *__info)); + +#endif /* sys/sysinfo.h */ diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index d78a1f7e89..019d746a73 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -2,6 +2,7 @@ adjtimex adjtime adjtimex 1 __adjtimex fdatasync - fdatasync 1 fdatasync +flock - flock 2 __flock flock fork - fork 0 __fork fork getegid - getegid 0 __getegid getegid geteuid - geteuid 0 __geteuid geteuid @@ -9,7 +10,10 @@ getpgid - getpgid 1 getpgid getpgrp - getpgrp 0 getpgrp getppid - getppid 0 __getppid getppid getsid - getsid 1 getsid +ioperm - ioperm 3 ioperm +iopl - iopl 1 iopl ipc msgget ipc 5 __ipc +llseek - _llseek 5 llseek mlock - mlock 2 __mlock mlock mlockall - mlockall 1 __mlockall mlockall mount - mount 5 __mount mount @@ -18,7 +22,7 @@ munlock - munlock 2 __munlock munlock munlockall - munlockall 0 __munlockall munlockall nanosleep - nanosleep 2 nanosleep personality init-first personality 1 __personality personality -pipe - pipe 1 __pipe pipe +pipe - pipe 1 __pipe pipe reboot - reboot 3 reboot s_getpriority getpriority getpriority 2 __syscall_getpriority s_ptrace ptrace ptrace 4 __syscall_ptrace @@ -31,9 +35,13 @@ sched_yield - sched_yield 0 __sched_yield sched_yield sched_primax - sched_get_priority_max 1 __sched_get_priority_max sched_get_priority_max sched_primin - sched_get_priority_min 1 __sched_get_priority_min sched_get_priority_min sched_rr_gi - sched_rr_get_interval 2 __sched_rr_get_interval sched_rr_get_interval +setfsgid - setfsgid 1 setfsgid +setfsuid - setfsuid 1 setfsuid setpgid - setpgid 2 setpgid sigpending - sigpending 1 sigpending sigprocmask - sigprocmask 3 __sigprocmask sigprocmask s_sysctl sysctl _sysctl 1 __syscall__sysctl +sysinfo - sysinfo 1 sysinfo umount - umount 1 __umount umount +uselib - uselib 1 uselib wait4 - wait4 4 __wait4 wait4 diff --git a/sysdeps/unix/sysv/linux/sysconf.c b/sysdeps/unix/sysv/linux/sysconf.c index d658165b07..2ae584f164 100644 --- a/sysdeps/unix/sysv/linux/sysconf.c +++ b/sysdeps/unix/sysv/linux/sysconf.c @@ -1,5 +1,4 @@ -/* Copyright (C) 1991, 1993, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. 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 @@ -13,291 +12,26 @@ 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* On Linux we must not ask __getdtablesize for te value for _SC_OPEN_MAX + because this would mean an endless loop. */ -#include -#include #include #include -#include -#include -#include -extern size_t EXFUN(__getpagesize, (NOARGS)); +extern long int __default_sysconf (int name); -/* Get the value of the system variable NAME. */ long int -DEFUN(__sysconf, (name), int name) +__sysconf (int name) { - switch (name) - { - default: - errno = EINVAL; - return -1; - - case _SC_ARG_MAX: -#ifdef ARG_MAX - return ARG_MAX; -#else - return -1; -#endif - - case _SC_CHILD_MAX: -#ifdef CHILD_MAX - return CHILD_MAX; -#else - return -1; -#endif - - case _SC_CLK_TCK: -#ifdef CLK_TCK - return CLK_TCK; -#else - return 60; -#endif - - case _SC_NGROUPS_MAX: -#ifdef NGROUPS_MAX - return NGROUPS_MAX; -#else - return -1; -#endif - - case _SC_OPEN_MAX: - return OPEN_MAX; - - case _SC_STREAM_MAX: -#ifdef STREAM_MAX - return STREAM_MAX; -#else - return FOPEN_MAX; -#endif - - case _SC_TZNAME_MAX: - return __tzname_max (); - - case _SC_JOB_CONTROL: -#ifdef _POSIX_JOB_CONTROL - return 1; -#else - return -1; -#endif - - case _SC_SAVED_IDS: -#ifdef _POSIX_SAVED_IDS - return 1; -#else - return -1; -#endif - - case _SC_REALTIME_SIGNALS: -#ifdef _POSIX_REALTIME_SIGNALS - return 1; -#else - return -1; -#endif - - case _SC_PRIORITY_SCHEDULING: -#ifdef _POSIX_PRIORITY_SCHEDULING - return 1; -#else - return -1; -#endif - - case _SC_TIMERS: -#ifdef _POSIX_TIMERS - return 1; -#else - return -1; -#endif - - case _SC_ASYNCHRONOUS_IO: -#ifdef _POSIX_ASYNCHRONOUS_IO - return 1; -#else - return -1; -#endif - - case _SC_PRIORITIZED_IO: -#ifdef _POSIX_PRIORITIZED_IO - return 1; -#else - return -1; -#endif - - case _SC_SYNCHRONIZED_IO: -#ifdef _POSIX_SYNCHRONIZED_IO - return 1; -#else - return -1; -#endif - - case _SC_FSYNC: -#ifdef _POSIX_FSYNC - return 1; -#else - return -1; -#endif - - case _SC_MAPPED_FILES: -#ifdef _POSIX_MAPPED_FILES - return 1; -#else - return -1; -#endif - - case _SC_MEMLOCK: -#ifdef _POSIX_MEMLOCK - return 1; -#else - return -1; -#endif - - case _SC_MEMLOCK_RANGE: -#ifdef _POSIX_MEMLOCK_RANGE - return 1; -#else - return -1; -#endif - - case _SC_MEMORY_PROTECTION: -#ifdef _POSIX_MEMORY_PROTECTION - return 1; -#else - return -1; -#endif + if (name == _SC_OPEN_MAX) + return OPEN_MAX; - case _SC_MESSAGE_PASSING: -#ifdef _POSIX_MESSAGE_PASSING - return 1; -#else - return -1; -#endif - - case _SC_SEMAPHORES: -#ifdef _POSIX_SEMAPHORES - return 1; -#else - return -1; -#endif - - case _SC_SHARED_MEMORY_OBJECTS: -#ifdef _POSIX_SHARED_MEMORY_OBJECTS - return 1; -#else - return -1; -#endif - - case _SC_VERSION: - return _POSIX_VERSION; - - case _SC_PAGESIZE: - return __getpagesize (); - - case _SC_BC_BASE_MAX: -#ifdef BC_BASE_MAX - return BC_BASE_MAX; -#else - return -1; -#endif - - case _SC_BC_DIM_MAX: -#ifdef BC_DIM_MAX - return BC_DIM_MAX; -#else - return -1; -#endif - - case _SC_BC_SCALE_MAX: -#ifdef BC_SCALE_MAX - return BC_SCALE_MAX; -#else - return -1; -#endif - - case _SC_BC_STRING_MAX: -#ifdef BC_STRING_MAX - return BC_STRING_MAX; -#else - return -1; -#endif - - case _SC_EQUIV_CLASS_MAX: -#ifdef EQUIV_CLASS_MAX - return EQUIV_CLASS_MAX; -#else - return -1; -#endif - - case _SC_EXPR_NEST_MAX: -#ifdef EXPR_NEST_MAX - return EXPR_NEST_MAX; -#else - return -1; -#endif - - case _SC_LINE_MAX: -#ifdef LINE_MAX - return LINE_MAX; -#else - return -1; -#endif - - case _SC_RE_DUP_MAX: -#ifdef RE_DUP_MAX - return RE_DUP_MAX; -#else - return -1; -#endif - - case _SC_CHARCLASS_NAME_MAX: -#ifdef CHARCLASS_NAME_MAX - return CHARCLASS_NAME_MAX; -#else - return -1; -#endif - - case _SC_2_VERSION: - /* This is actually supposed to return the version - of the 1003.2 utilities on the system {POSIX2_VERSION}. */ - return _POSIX2_C_VERSION; - - case _SC_2_C_BIND: -#ifdef _POSIX2_C_BIND - return _POSIX2_C_BIND; -#else - return -1; -#endif - - case _SC_2_C_DEV: -#ifdef _POSIX2_C_DEV - return _POSIX2_C_DEV; -#else - return -1; -#endif - - case _SC_2_FORT_DEV: -#ifdef _POSIX2_FORT_DEV - return _POSIX2_FORT_DEV; -#else - return -1; -#endif - - case _SC_2_LOCALEDEF: -#ifdef _POSIX2_LOCALEDEF - return _POSIX2_LOCALEDEF; -#else - return -1; -#endif - - case _SC_2_SW_DEV: -#ifdef _POSIX2_SW_DEV - return _POSIX2_SW_DEV; -#else - return -1; -#endif - } + return __default_sysconf (name); } -weak_alias (__sysconf, sysconf) +#define __sysconf __default_sysconf + +#include diff --git a/sysdeps/unix/sysv/sysv4/sysconf.c b/sysdeps/unix/sysv/sysv4/sysconf.c index 9ed5cbcd20..81d660fe64 100644 --- a/sysdeps/unix/sysv/sysv4/sysconf.c +++ b/sysdeps/unix/sysv/sysv4/sysconf.c @@ -186,6 +186,83 @@ DEFUN(__sysconf, (name), int name) case _SC_PAGESIZE: return __sysconfig (_CONFIG_PAGESIZE); + case _SC_AIO_LISTIO_MAX: +#ifdef AIO_LISTIO_MAX + return AIO_LISTIO_MAX; +#else + return -1; +#endif + + case _SC_AIO_MAX: +#ifdef AIO_MAX + return AIO_MAX; +#else + return -1; +#endif + + case _SC_AIO_PRIO_DELTA_MAX: +#ifdef AIO_PRIO_DELTA_MAX + return AIO_PRIO_DELTA_MAX; +#else + return -1; +#endif + + case _SC_DELAYTIMER_MAX: +#ifdef DELAYTIMER_MAX + return DELAYTIMER_MAX; +#else + return -1; +#endif + + case _SC_MQ_OPEN_MAX: +#ifdef MQ_OPEN_MAX + return MQ_OPEN_MAX; +#else + return -1; +#endif + + case _SC_MQ_PRIO_MAX: +#ifdef MQ_PRIO_MAX + return MQ_PRIO_MAX; +#else + return -1; +#endif + + case _SC_RTSIG_MAX: +#ifdef RTSIG_MAX + return RTSIG_MAX; +#else + return -1; +#endif + + case _SC_SEM_NSEMS_MAX: +#ifdef SEM_NSEMS_MAX + return SEM_NSEMS_MAX; +#else + return -1; +#endif + + case _SC_SEM_VALUE_MAX: +#ifdef SEM_VALUE_MAX + return SEM_VALUE_MAX; +#else + return -1; +#endif + + case _SC_SIGQUEUE_MAX: +#ifdef SIGQUEUE_MAX + return SIGQUEUE_MAX; +#else + return -1; +#endif + + case _SC_TIMER_MAX: +#ifdef TIMER_MAX + return TIMER_MAX; +#else + return -1; +#endif + case _SC_BC_BASE_MAX: #ifdef BC_BASE_MAX return BC_BASE_MAX; -- cgit v1.2.3