aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/add_1.c61
-rw-r--r--sysdeps/generic/confname.h22
-rw-r--r--sysdeps/generic/inlines.c3
-rw-r--r--sysdeps/mach/hurd/_exit.c6
-rw-r--r--sysdeps/mach/hurd/bind.c4
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c2
-rw-r--r--sysdeps/mach/hurd/fdatasync.c32
-rw-r--r--sysdeps/mach/hurd/fpathconf.c4
-rw-r--r--sysdeps/mach/hurd/fsync.c4
-rw-r--r--sysdeps/mach/hurd/getcwd.c59
-rw-r--r--sysdeps/mach/hurd/i386/exc2signal.c95
-rw-r--r--sysdeps/mach/hurd/i386/trampoline.c4
-rw-r--r--sysdeps/mach/hurd/link.c4
-rw-r--r--sysdeps/mach/hurd/rename.c4
-rw-r--r--sysdeps/mach/hurd/setitimer.c3
-rw-r--r--sysdeps/mach/hurd/symlink.c8
-rw-r--r--sysdeps/mach/hurd/wait4.c5
-rw-r--r--sysdeps/mach/hurd/xmknod.c2
-rw-r--r--sysdeps/posix/fpathconf.c10
-rw-r--r--sysdeps/posix/sysconf.c77
-rw-r--r--sysdeps/stub/swapoff.c30
-rw-r--r--sysdeps/unix/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/Makefile5
-rw-r--r--sysdeps/unix/sysv/linux/gethostid.c6
-rw-r--r--sysdeps/unix/sysv/linux/i386/Makefile8
-rw-r--r--sysdeps/unix/sysv/linux/i386/sys/perm.h36
-rw-r--r--sysdeps/unix/sysv/linux/i386/sys/vm86.h34
-rw-r--r--sysdeps/unix/sysv/linux/i386/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/schedbits.h1
-rw-r--r--sysdeps/unix/sysv/linux/sys/acct.h34
-rw-r--r--sysdeps/unix/sysv/linux/sys/socket.h168
-rw-r--r--sysdeps/unix/sysv/linux/sys/sysinfo.h30
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list10
-rw-r--r--sysdeps/unix/sysv/linux/sysconf.c294
-rw-r--r--sysdeps/unix/sysv/sysv4/sysconf.c77
36 files changed, 694 insertions, 453 deletions
diff --git a/sysdeps/generic/add_1.c b/sysdeps/generic/add_1.c
deleted file mode 100644
index 7b1c697a67..0000000000
--- a/sysdeps/generic/add_1.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* mpn_add_1 --
-
-Copyright (C) 1993, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#define __mpn_add_1 __noname
-#include "gmp.h"
-#undef __mpn_add_1
-
-#include "gmp-impl.h"
-
-mp_limb
-__mpn_add_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_size_t s1_size;
- register mp_limb s2_limb;
-{
- register mp_limb x;
-
- x = *s1_ptr++;
- s2_limb = x + s2_limb;
- *res_ptr++ = s2_limb;
- if (s2_limb < x)
- {
- while (--s1_size != 0)
- {
- x = *s1_ptr++ + 1;
- *res_ptr++ = x;
- if (x != 0)
- goto fin;
- }
-
- return 1;
- }
-
- fin:
- if (res_ptr != s1_ptr)
- {
- mp_size_t i;
- for (i = 0; i < s1_size - 1; i++)
- res_ptr[i] = s1_ptr[i];
- }
-
- return 0;
-}
diff --git a/sysdeps/generic/confname.h b/sysdeps/generic/confname.h
index 6c58410b10..717229a3ab 100644
--- a/sysdeps/generic/confname.h
+++ b/sysdeps/generic/confname.h
@@ -94,10 +94,32 @@ enum
#define _SC_SEMAPHORES _SC_SEMAPHORES
_SC_SHARED_MEMORY_OBJECTS,
#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
+ _SC_AIO_LISTIO_MAX,
+#define _SC_AIO_LIST_MAX _SC_AIO_LIST_MAX
+ _SC_AIO_MAX,
+#define _SC_AIO_MAX _SC_AIO_MAX
+ _SC_AIO_PRIO_DELTA_MAX,
+#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
+ _SC_DELAYTIMER_MAX,
+#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
+ _SC_MQ_OPEN_MAX,
+#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
+ _SC_MQ_PRIO_MAX,
+#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
_SC_VERSION,
#define _SC_VERSION _SC_VERSION
_SC_PAGESIZE,
#define _SC_PAGESIZE _SC_PAGESIZE
+ _SC_RTSIG_MAX,
+#define _SC_RTSIG_MAX _SC_RTSIG_MAX
+ _SC_SEM_NSEMS_MAX,
+#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
+ _SC_SEM_VALUE_MAX,
+#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
+ _SC_SIGQUEUE_MAX,
+#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
+ _SC_TIMER_MAX,
+#define _SC_TIMER_MAX _SC_TIMER_MAX
/* Values for the argument to `sysconf'
corresponding to _POSIX2_* symbols. */
diff --git a/sysdeps/generic/inlines.c b/sysdeps/generic/inlines.c
new file mode 100644
index 0000000000..dca305e6e4
--- /dev/null
+++ b/sysdeps/generic/inlines.c
@@ -0,0 +1,3 @@
+#define _FORCE_INLINES
+#define _EXTERN_INLINE /* empty */
+#include "gmp.h"
diff --git a/sysdeps/mach/hurd/_exit.c b/sysdeps/mach/hurd/_exit.c
index fd56791ee8..aa0a2616ff 100644
--- a/sysdeps/mach/hurd/_exit.c
+++ b/sysdeps/mach/hurd/_exit.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1994, 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
@@ -27,14 +27,14 @@ void
_hurd_exit (int status)
{
/* Give the proc server our exit status. */
- __USEPORT (PROC, __proc_mark_exit (port, status));
+ __USEPORT (PROC, __proc_mark_exit (port, status, 0));
/* Commit suicide. */
__task_terminate (__mach_task_self ());
/* Perhaps the cached mach_task_self was bogus. */
__task_terminate ((__mach_task_self) ());
-
+
/* This sucker really doesn't want to die. */
while (1)
{
diff --git a/sysdeps/mach/hurd/bind.c b/sysdeps/mach/hurd/bind.c
index a6ebc1ea34..37ddcb8c01 100644
--- a/sysdeps/mach/hurd/bind.c
+++ b/sysdeps/mach/hurd/bind.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 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
@@ -67,7 +67,7 @@ DEFUN(bind, (fd, addr, len),
if (! err)
{
/* Link the node, now a socket, into the target directory. */
- err = __dir_link (dir, node, n);
+ err = __dir_link (dir, node, n, 1);
if (err == EEXIST)
err = EADDRINUSE;
}
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index c580bb31ed..7e0152bf6c 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -548,7 +548,7 @@ void
_exit (int status)
{
__proc_mark_exit (_dl_hurd_data->portarray[INIT_PORT_PROC],
- W_EXITCODE (status, 0));
+ W_EXITCODE (status, 0), 0);
while (__task_terminate (__mach_task_self ()))
__mach_task_self_ = (__mach_task_self) ();
}
diff --git a/sysdeps/mach/hurd/fdatasync.c b/sysdeps/mach/hurd/fdatasync.c
new file mode 100644
index 0000000000..d7f82efe25
--- /dev/null
+++ b/sysdeps/mach/hurd/fdatasync.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 1991, 92, 93, 94, 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. */
+
+#include <errno.h>
+#include <unistd.h>
+#include <hurd.h>
+#include <hurd/fd.h>
+
+/* Make all changes done to FD's file data actually appear on disk. */
+int
+fdatasync (int fd)
+{
+ error_t err = HURD_DPORT_USE (fd, __file_sync (port, 1, 1));
+ if (err)
+ return __hurd_dfail (fd, err);
+ return 0;
+}
diff --git a/sysdeps/mach/hurd/fpathconf.c b/sysdeps/mach/hurd/fpathconf.c
index f5e6579ee8..5fc51010fb 100644
--- a/sysdeps/mach/hurd/fpathconf.c
+++ b/sysdeps/mach/hurd/fpathconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
+/* 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
@@ -27,7 +27,7 @@ long int
__fpathconf (int fd, int name)
{
error_t err;
- long int value;
+ int value;
if (err = HURD_DPORT_USE (fd, __io_pathconf (port, name, &value)))
return __hurd_dfail (fd, err), -1L;
diff --git a/sysdeps/mach/hurd/fsync.c b/sysdeps/mach/hurd/fsync.c
index adfe9800d3..d4982c1e41 100644
--- a/sysdeps/mach/hurd/fsync.c
+++ b/sysdeps/mach/hurd/fsync.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 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
@@ -26,7 +26,7 @@ Cambridge, MA 02139, USA. */
int
DEFUN(fsync, (fd), int fd)
{
- error_t err = HURD_DPORT_USE (fd, __file_sync (port, 1));
+ error_t err = HURD_DPORT_USE (fd, __file_sync (port, 1, 0));
if (err)
return __hurd_dfail (fd, err);
return 0;
diff --git a/sysdeps/mach/hurd/getcwd.c b/sysdeps/mach/hurd/getcwd.c
index 02699a7e84..ed8ed96697 100644
--- a/sysdeps/mach/hurd/getcwd.c
+++ b/sysdeps/mach/hurd/getcwd.c
@@ -39,11 +39,10 @@ char *
__getcwd (char *buf, size_t size)
{
error_t err;
- dev_t rootdev, thisdev;
+ mach_port_t rootid, thisid, rootdevid, thisdevid;
ino_t rootino, thisino;
char *file_name;
register char *file_namep;
- struct stat st;
file_t parent;
char *dirbuf = NULL;
unsigned int dirbufsize = 0;
@@ -51,6 +50,10 @@ __getcwd (char *buf, size_t size)
inline void cleanup (void)
{
__mach_port_deallocate (__mach_task_self (), parent);
+ __mach_port_deallocate (__mach_task_self (), thisid);
+ __mach_port_deallocate (__mach_task_self (), thisdevid);
+ __mach_port_deallocate (__mach_task_self (), rootid);
+ __mach_port_deallocate (__mach_task_self (), rootdevid);
if (dirbuf != NULL)
__vm_deallocate (__mach_task_self (),
@@ -81,37 +84,30 @@ __getcwd (char *buf, size_t size)
file_namep = file_name + size;
*--file_namep = '\0';
- /* Get a port to our root directory and stat it. */
+ /* Get a port to our root directory and get its identity. */
- if (err = __USEPORT (CRDIR, __io_stat (port, &st)))
+ if (err = __USEPORT (CRDIR, __io_identity (port,
+ &rootid, &rootdevid, &rootino)))
return __hurd_fail (err), NULL;
- rootdev = st.st_dev;
- rootino = st.st_ino;
+ __mach_port_deallocate (__mach_task_self (), rootdevid);
/* Get a port to our current working directory and stat it. */
- if (err = __USEPORT (CWDIR, __mach_port_mod_refs (__mach_task_self (),
- (parent = port),
- MACH_PORT_RIGHT_SEND,
- 1)))
- return __hurd_fail (err), NULL;
- if (err = __io_stat (parent, &st))
+ if (err = __USEPORT (CRDIR, __io_identity (port,
+ &thisid, &thisdevid, &thisino)))
{
- cleanup ();
+ __mach_port_deallocate (__mach_task_self (), rootid);
return __hurd_fail (err), NULL;
}
- thisdev = st.st_dev;
- thisino = st.st_ino;
-
- while (!(thisdev == rootdev && thisino == rootino))
+ while (thisid != rootid)
{
/* PARENT is a port to the directory we are currently on;
- THISDEV and THISINO are its device and node numbers.
- Look in its parent (..) for a file with the same numbers. */
+ THISID, THISDEV, and THISINO are its identity.
+ Look in its parent (..) for a file with the same file number. */
struct dirent *d;
- dev_t dotdev;
+ mach_port_t dotid, dotdevid;
ino_t dotino;
int mount_point;
file_t newp;
@@ -127,12 +123,12 @@ __getcwd (char *buf, size_t size)
__mach_port_deallocate (__mach_task_self (), parent);
parent = newp;
- /* Figure out if this directory is a mount point. */
- if (err = __io_stat (parent, &st))
+ /* Get this directory's identity and figure out if it's a mount point. */
+ if (err = __io_identity (parent, &dotid, &dotdevid, &dotino))
goto errlose;
- dotdev = st.st_dev;
- dotino = st.st_ino;
- mount_point = dotdev != thisdev;
+ __mach_port_deallocate (__mach_task_self (), dotid);
+ __mach_port_deallocate (__mach_task_self (), dotdevid);
+ mount_point = dotdevid != thisdevid;
/* Search for the last directory. */
direntry = 0;
@@ -178,13 +174,17 @@ __getcwd (char *buf, size_t size)
{
file_t try = __file_name_lookup_under (parent, d->d_name,
O_NOLINK, 0);
+ file_t id, devid;
+ ino_t fileno;
if (try == MACH_PORT_NULL)
goto lose;
- err = __io_stat (try, &st);
+ err = __io_identity (try, &id, &devid, &fileno);
__mach_port_deallocate (__mach_task_self (), try);
if (err)
goto errlose;
- if (st.st_dev == thisdev && st.st_ino == thisino)
+ __mach_port_deallocate (__mach_task_self (), id);
+ __mach_port_deallocate (__mach_task_self (), devid);
+ if (id == thisid)
goto found;
}
}
@@ -232,7 +232,10 @@ __getcwd (char *buf, size_t size)
/* The next iteration will find the name of the directory we
just searched through. */
- thisdev = dotdev;
+ __mach_port_deallocate (__mach_task_self (), thisid);
+ __mach_port_deallocate (__mach_task_self (), thisdevid);
+ thisid = dotid;
+ thisdevid = dotdevid;
thisino = dotino;
}
diff --git a/sysdeps/mach/hurd/i386/exc2signal.c b/sysdeps/mach/hurd/i386/exc2signal.c
index 19f845a49e..10fe500f82 100644
--- a/sysdeps/mach/hurd/i386/exc2signal.c
+++ b/sysdeps/mach/hurd/i386/exc2signal.c
@@ -1,5 +1,5 @@
/* Translate Mach exception codes into signal numbers. i386 version.
-Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
+Copyright (C) 1991, 1992, 1994, 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
@@ -25,48 +25,47 @@ Cambridge, MA 02139, USA. */
into a signal number and signal subcode. */
void
-_hurd_exception2signal (int exception, int code, int subcode,
- int *signo, long int *sigcode, int *error)
+_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo)
{
- *error = 0;
+ detail->error = 0;
- switch (exception)
+ switch (detail->exc)
{
default:
*signo = SIGIOT;
- *sigcode = exception;
+ detail->code = detail->exc;
break;
-
+
case EXC_BAD_ACCESS:
- if (code == KERN_PROTECTION_FAILURE)
+ if (detail->exc_code == KERN_PROTECTION_FAILURE)
*signo = SIGSEGV;
else
*signo = SIGBUS;
- *sigcode = subcode;
- *error = code;
+ detail->code = detail->exc_subcode;
+ detail->error = detail->exc_code;
break;
case EXC_BAD_INSTRUCTION:
*signo = SIGILL;
- if (code == EXC_I386_INVOP)
- *sigcode = ILL_INVOPR_FAULT;
- else if (code == EXC_I386_STKFLT)
- *sigcode = ILL_STACK_FAULT;
+ if (detail->exc_code == EXC_I386_INVOP)
+ detail->code = ILL_INVOPR_FAULT;
+ else if (detail->exc_code == EXC_I386_STKFLT)
+ detail->code = ILL_STACK_FAULT;
else
- *sigcode = 0;
+ detail->code = 0;
break;
-
+
case EXC_ARITHMETIC:
- switch (code)
+ switch (detail->exc_code)
{
case EXC_I386_DIV: /* integer divide by zero */
*signo = SIGFPE;
- *sigcode = FPE_INTDIV_FAULT;
+ detail->code = FPE_INTDIV_FAULT;
break;
-
+
case EXC_I386_INTO: /* integer overflow */
*signo = SIGFPE;
- *sigcode = FPE_INTOVF_TRAP;
+ detail