aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/mach/hurd/jmp-unwind.c36
-rw-r--r--sysdeps/mach/hurd/setitimer.c38
-rw-r--r--sysdeps/mach/hurd/sigwait.c74
-rw-r--r--sysdeps/mach/libc-lock.h2
-rw-r--r--sysdeps/posix/getcwd.c15
-rw-r--r--sysdeps/posix/ttyname.c10
-rw-r--r--sysdeps/posix/ttyname_r.c4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/m68k/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/schedbits.h30
10 files changed, 106 insertions, 108 deletions
diff --git a/sysdeps/mach/hurd/jmp-unwind.c b/sysdeps/mach/hurd/jmp-unwind.c
index 46e4b6157d..2d5804c71e 100644
--- a/sysdeps/mach/hurd/jmp-unwind.c
+++ b/sysdeps/mach/hurd/jmp-unwind.c
@@ -1,21 +1,21 @@
/* _longjmp_unwind -- Clean up stack frames unwound by longjmp. Hurd version.
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ 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
-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 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.
+ 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. */
+ 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 <setjmp.h>
#include <hurd/userlink.h>
@@ -44,10 +44,10 @@ _longjmp_unwind (jmp_buf env, int val)
assert (! __spin_lock_locked (&ss->critical_section_lock));
__spin_lock (&ss->critical_section_lock);
- /* Remove local signal preempters being unwound past. */
- while (ss->preempters &&
- _JMPBUF_UNWINDS (env[0].__jmpbuf, ss->preempters))
- ss->preempters = ss->preempters->next;
+ /* Remove local signal preemptors being unwound past. */
+ while (ss->preemptors &&
+ _JMPBUF_UNWINDS (env[0].__jmpbuf, ss->preemptors))
+ ss->preemptors = ss->preemptors->next;
__spin_unlock (&ss->lock);
diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c
index 0b2ace3f4c..6cad6eab2e 100644
--- a/sysdeps/mach/hurd/setitimer.c
+++ b/sysdeps/mach/hurd/setitimer.c
@@ -1,20 +1,20 @@
/* Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ 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 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.
+ 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. */
+ 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 <ansidecl.h>
#include <stddef.h>
@@ -112,7 +112,7 @@ timer_thread (void)
static sighandler_t
-restart_itimer (struct hurd_signal_preempter *preempter,
+restart_itimer (struct hurd_signal_preemptor *preemptor,
struct hurd_sigstate *ss,
int *signo, struct hurd_signal_detail *detail)
{
@@ -170,18 +170,18 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old,
{
/* Make sure the itimer thread is set up. */
- /* Set up a signal preempter global for all threads to
+ /* Set up a signal preemptor global for all threads to
run `restart_itimer' each time a SIGALRM would arrive. */
- static struct hurd_signal_preempter preempter =
+ static struct hurd_signal_preemptor preemptor =
{
__sigmask (SIGALRM), 0, 0,
&restart_itimer,
};
__mutex_lock (&_hurd_siglock);
- if (! preempter.next && _hurdsig_preempters != &preempter)
+ if (! preemptor.next && _hurdsig_preemptors != &preemptor)
{
- preempter.next = _hurdsig_preempters;
- _hurdsig_preempters = &preempter;
+ preemptor.next = _hurdsig_preemptors;
+ _hurdsig_preemptors = &preemptor;
}
__mutex_unlock (&_hurd_siglock);
diff --git a/sysdeps/mach/hurd/sigwait.c b/sysdeps/mach/hurd/sigwait.c
index b3916f83ae..b8e5ade84f 100644
--- a/sysdeps/mach/hurd/sigwait.c
+++ b/sysdeps/mach/hurd/sigwait.c
@@ -1,20 +1,20 @@
/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ 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 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.
+ 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. */
+ 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 <errno.h>
#include <hurd.h>
@@ -30,13 +30,13 @@ __sigwait (const sigset_t *set, int *sig)
struct hurd_sigstate *ss;
sigset_t mask;
int signo = 0;
- struct hurd_signal_preempter preempter;
+ struct hurd_signal_preemptor preemptor;
jmp_buf buf;
mach_port_t wait;
mach_msg_header_t msg;
-
+
sighandler_t
- preempt_fun (struct hurd_signal_preempter *pe,
+ preempt_fun (struct hurd_signal_preemptor *pe,
struct hurd_sigstate *ss,
int *sigp,
struct hurd_signal_detail *detail)
@@ -44,7 +44,7 @@ __sigwait (const sigset_t *set, int *sig)
if (signo)
/* We've already been run; don't interfere. */
return SIG_ERR;
-
+
signo = *sigp;
/* Make sure this is all kosher */
@@ -55,7 +55,7 @@ __sigwait (const sigset_t *set, int *sig)
return pe->handler;
}
-
+
void
handler (int sig)
{
@@ -68,10 +68,10 @@ __sigwait (const sigset_t *set, int *sig)
if (set != NULL)
/* Crash before locking */
mask = *set;
-
+
ss = _hurd_self_sigstate ();
__spin_lock (&ss->lock);
-
+
/* See if one of these signals is currently pending */
if (ss->pending & mask)
{
@@ -86,22 +86,22 @@ __sigwait (const sigset_t *set, int *sig)
}
/* Wait for one of them to show up */
-
+
if (!setjmp (buf))
{
- /* Make the preempter */
- preempter.signals = mask;
- preempter.first = 0;
- preempter.last = -1;
- preempter.preempter = preempt_fun;
- preempter.handler = handler;
-
- /* Install this preempter */
- preempter.next = ss->preempters;
- ss->preempters = &preempter;
-
+ /* Make the preemptor */
+ preemptor.signals = mask;
+ preemptor.first = 0;
+ preemptor.last = -1;
+ preemptor.preemptor = preempt_fun;
+ preemptor.handler = handler;
+
+ /* Install this preemptor */
+ preemptor.next = ss->preemptors;
+ ss->preemptors = &preemptor;
+
__spin_unlock (&ss->lock);
-
+
/* Wait. */
__mach_msg (&msg, MACH_RCV_MSG, 0, sizeof (msg), wait,
MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
@@ -113,11 +113,11 @@ __sigwait (const sigset_t *set, int *sig)
__spin_lock (&ss->lock);
- /* Delete our preempter. */
- assert (ss->preempters == &preempter);
- ss->preempters = preempter.next;
+ /* Delete our preemptor. */
+ assert (ss->preemptors == &preemptor);
+ ss->preemptors = preemptor.next;
}
-
+
all_done:
/* Cause the pointless side-effect. */
diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h
index e2caa82b9b..36bf2c1038 100644
--- a/sysdeps/mach/libc-lock.h
+++ b/sysdeps/mach/libc-lock.h
@@ -54,7 +54,7 @@ typedef struct __libc_lock_opaque__ __libc_lock_t;
#define __libc_lock_lock(NAME) __mutex_lock (&(NAME))
/* Lock the named lock variable. */
-#define __libc_lock_trylock(NAME) __mutex_trylock (&(NAME))
+#define __libc_lock_trylock(NAME) (!__mutex_trylock (&(NAME)))
/* Unlock the named lock variable. */
#define __libc_lock_unlock(NAME) __mutex_unlock (&(NAME))
diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c
index 4ea90a7320..a83b286380 100644
--- a/sysdeps/posix/getcwd.c
+++ b/sysdeps/posix/getcwd.c
@@ -187,10 +187,6 @@ extern char *alloca ();
#define __getcwd getcwd
#endif
-#if defined HAVE_READDIR_R && !defined _LIBC
-#define __readdir_r readdir_r
-#endif
-
/* Get the pathname of the current working directory, and put it in SIZE
bytes of BUF. Returns NULL if the directory couldn't be determined or
SIZE was too small. If successful, returns BUF. In GNU, if BUF is
@@ -254,9 +250,6 @@ __getcwd (buf, size)
{
register DIR *dirstream;
struct dirent *d;
-#if defined HAVE_READDIR_R || defined _LIBC
- struct dirent dirbuf;
-#endif
dev_t dotdev;
ino_t dotino;
char mount_point;
@@ -299,13 +292,7 @@ __getcwd (buf, size)
dirstream = __opendir (dotp);
if (dirstream == NULL)
goto lose;
- while (
-#if defined HAVE_READDIR_R || defined _LIBC
- __readdir_r (dirstream, &dirbuf, &d) >= 0
-#else
- (d = __readdir (dirstream)) != NULL
-#endif
- )
+ while ((d = __readdir (dirstream)) != NULL)
{
if (d->d_name[0] == '.' &&
(d->d_name[1] == '\0' ||
diff --git a/sysdeps/posix/ttyname.c b/sysdeps/posix/ttyname.c
index 043e91b084..ce384ebc0e 100644
--- a/sysdeps/posix/ttyname.c
+++ b/sysdeps/posix/ttyname.c
@@ -41,7 +41,7 @@ ttyname (fd)
dev_t mydev;
ino_t myino;
DIR *dirstream;
- struct dirent dirbuf, *d;
+ struct dirent *d;
int save = errno;
if (!__isatty (fd))
@@ -56,7 +56,7 @@ ttyname (fd)
if (dirstream == NULL)
return NULL;
- while (__readdir_r (dirstream, &dirbuf, &d) >= 0)
+ while ((d = readdir (dirstream)) != NULL)
if ((ino_t) d->d_fileno == myino)
{
size_t dlen = _D_ALLOC_NAMLEN (d);
@@ -66,7 +66,11 @@ ttyname (fd)
namelen = 2 * (sizeof (dev) + dlen); /* Big enough. */
name = malloc (namelen);
if (! name)
- return NULL;
+ {
+ /* Perhaps it helps to free the directory stream buffer. */
+ (void) closedir (dirstream);
+ return NULL;
+ }
(void) memcpy (name, dev, sizeof (dev) - 1);
name[sizeof (dev) - 1] = '/';
}
diff --git a/sysdeps/posix/ttyname_r.c b/sysdeps/posix/ttyname_r.c
index c7cf21aeee..d404245be5 100644
--- a/sysdeps/posix/ttyname_r.c
+++ b/sysdeps/posix/ttyname_r.c
@@ -43,7 +43,7 @@ __ttyname_r (fd, buf, buflen)
dev_t mydev;
ino_t myino;
DIR *dirstream;
- struct dirent dirbuf, *d;
+ struct dirent *d;
int save = errno;
/* Test for the absolute minimal size. This makes life easier inside
@@ -74,7 +74,7 @@ __ttyname_r (fd, buf, buflen)
buf[sizeof (dev) - 1] = '/';
buflen -= sizeof (dev);
- while (__readdir_r (dirstream, &dirbuf, &d) >= 0)
+ while ((d = readdir (dirstream)) != NULL)
if ((ino_t) d->d_fileno == myino)
{
char *cp;
diff --git a/sysdeps/unix/sysv/linux/m68k/Dist b/sysdeps/unix/sysv/linux/m68k/Dist
index 738b9cc542..e7d5949d51 100644
--- a/sysdeps/unix/sysv/linux/m68k/Dist
+++ b/sysdeps/unix/sysv/linux/m68k/Dist
@@ -1 +1,2 @@
clone.S
+mremap.S
diff --git a/sysdeps/unix/sysv/linux/m68k/Makefile b/sysdeps/unix/sysv/linux/m68k/Makefile
index bdbd1057c4..12e95f11bf 100644
--- a/sysdeps/unix/sysv/linux/m68k/Makefile
+++ b/sysdeps/unix/sysv/linux/m68k/Makefile
@@ -1,3 +1,7 @@
# Linux/m68k uses Motorola asm syntax and the ELF format.
m68k-syntax-flag = -DMOTOROLA_SYNTAX
+
+ifeq ($(subdir),misc)
+sysdep_routines += mremap
+endif
diff --git a/sysdeps/unix/sysv/linux/schedbits.h b/sysdeps/unix/sysv/linux/schedbits.h
index 2af419ec4e..97683cd3ef 100644
--- a/sysdeps/unix/sysv/linux/schedbits.h
+++ b/sysdeps/unix/sysv/linux/schedbits.h
@@ -1,22 +1,22 @@
/* Definitions of constants and data structure for POSIX 1003.1b-1993
scheduling interface.
-Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ 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 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.
+ 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. */
+ 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 _SCHEDBITS_H
#define _SCHEDBITS_H 1
@@ -44,6 +44,8 @@ struct sched_param
/* Clone current process. The parameter list of FN is not for true. Only
dots is not allowed by ISO C and without argument the compiler would
complain about a missing parameter list. */
+extern int __clone __P ((int (*__fn) (void *, ...), void *__child_stack,
+ int __flags, int __nargs, ...));
extern int clone __P ((int (*__fn) (void *, ...), void *__child_stack,
int __flags, int __nargs, ...));