about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--hurd/hurd/fd.h10
-rw-r--r--hurd/hurd/signal.h41
-rw-r--r--hurd/hurd/sigpreempt.h3
-rw-r--r--hurd/hurdsig.c23
-rw-r--r--sysdeps/mach/hurd/sysd-stdio.c8
-rw-r--r--sysdeps/stub/sched_getp.c3
-rw-r--r--sysdeps/stub/sched_gets.c1
-rw-r--r--sysdeps/stub/sched_rr_gi.c1
-rw-r--r--sysdeps/stub/sched_setp.c3
-rw-r--r--sysdeps/stub/sched_sets.c3
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h2
-rw-r--r--wcsmbs/wcswidth.c2
-rw-r--r--wcsmbs/wcwidth.c2
14 files changed, 81 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index 42f1a4120f..be527d6ac2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Tue May  7 10:51:52 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
+
+	* wcsmbs/wcwidth.c, wcsmbs/wcswidth.c: Fixed typos.
+
+	* sysdeps/unix/sysv/linux/sys/mman.h: Fixed typo.
+
+	* sysdeps/stub/sched_getp.c: Add missing #include <sys/types.h>.
+	* sysdeps/stub/sched_sets.c: Likewise.
+	* sysdeps/stub/sched_setp.c: Likewise.
+	* sysdeps/stub/sched_rr_gi.c: Likewise.
+	* sysdeps/stub/sched_gets.c: Likewise.
+
+	* hurd/hurdsig.c: Use struct hurd_signal_detail.
+	* hurd/hurd/fd.h (_hurd_fd_error): Likewise.
+	* sysdeps/mach/hurd/sysd-stdio.c (fd_fail): Likewise.
+
 Mon May  6 09:51:05 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
 	* stdio/linewrap.c: New file.
diff --git a/hurd/hurd/fd.h b/hurd/hurd/fd.h
index 4747c785a5..b6402ea075 100644
--- a/hurd/hurd/fd.h
+++ b/hurd/hurd/fd.h
@@ -1,5 +1,5 @@
 /* File descriptors.
-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
@@ -153,14 +153,18 @@ _hurd_fd_error_signal (error_t err)
 
 /* Handle an error from an RPC on a file descriptor's port.  You should
    always use this function to handle errors from RPCs made on file
-   descriptor ports.  Some errors are translated into signals.  */   
+   descriptor ports.  Some errors are translated into signals.  */
 
 _EXTERN_INLINE error_t
 _hurd_fd_error (int fd, error_t err)
 {
   int signo = _hurd_fd_error_signal (err);
   if (signo)
-    _hurd_raise_signal (NULL, signo, fd, err);
+    {
+      const struct hurd_signal_detail detail
+	= { code: fd, error: err, exc: 0 };
+      _hurd_raise_signal (NULL, signo, &detail);
+    }
   return err;
 }
 
diff --git a/hurd/hurd/signal.h b/hurd/hurd/signal.h
index 4b439b6faa..27349d3ed0 100644
--- a/hurd/hurd/signal.h
+++ b/hurd/hurd/signal.h
@@ -43,6 +43,18 @@ Cambridge, MA 02139, USA.  */
 struct hurd_signal_preempter;	/* <hurd/sigpreempt.h> */
 
 
+/* Full details of a signal.  */
+struct hurd_signal_detail
+  {
+    /* Codes from origination Mach exception_raise message.  */
+    integer_t exc, exc_code, exc_subcode;
+    /* Sigcode as passed or computed from exception codes.  */
+    integer_t code;
+    /* Error code as passed or extracted from exception codes.  */
+    error_t error;
+  };
+
+
 /* Per-thread signal state.  */
 
 struct hurd_sigstate
@@ -65,13 +77,8 @@ struct hurd_sigstate
        stack frame, and each next element in an outermore frame.  */
     struct hurd_signal_preempter *preempters;
 
-    struct
-      {
-	/* For each signal that may be pending, the
-	   sigcode and error code to deliver it with.  */
-	long int code;
-	error_t error;
-      } pending_data[NSIG];
+    /* For each signal that may be pending, the details to deliver it with.  */
+    struct hurd_signal_detail pending_data[NSIG];
 
     /* If `suspended' is set when this thread gets a signal,
        the signal thread sends an empty message to it.  */
@@ -217,27 +224,27 @@ extern void _hurdsig_init (void);
 
 extern void _hurdsig_fault_init (void);
 
-/* Raise a signal as described by SIGNO, SIGCODE and SIGERROR, on the
-   thread whose sigstate SS points to.  If SS is a null pointer, this
-   instead affects the calling thread.  */
+/* Raise a signal as described by SIGNO an DETAIL, on the thread whose
+   sigstate SS points to.  If SS is a null pointer, this instead affects
+   the calling thread.  */
 
-extern void _hurd_raise_signal (struct hurd_sigstate *ss,
-				int signo, long int sigcode, int sigerror);
+extern void _hurd_raise_signal (struct hurd_sigstate *ss, int signo,
+				const struct hurd_signal_detail *detail);
 
 /* Translate a Mach exception into a signal (machine-dependent).  */
 
-extern void _hurd_exception2signal (int exception, int code, int subcode,
-				    int *signo, long int *sigcode, int *error);
+extern void _hurd_exception2signal (struct hurd_signal_detail *);
 
 
 /* Make the thread described by SS take the signal described by SIGNO and
-   SIGCODE.  If the process is traced, this will in fact stop with a SIGNO
+   DETAIL.  If the process is traced, this will in fact stop with a SIGNO
    as the stop signal unless UNTRACED is nonzero.  When the signal can be
    considered delivered, sends a sig_post reply message on REPLY_PORT
    indicating success.  SS is not locked.  */
 
 extern void _hurd_internal_post_signal (struct hurd_sigstate *ss,
-					int signo, long int sigcode, int error,
+					int signo,
+					struct hurd_signal_detail *detail,
 					mach_port_t reply_port,
 					mach_msg_type_name_t reply_port_type,
 					int untraced);
@@ -252,7 +259,7 @@ extern void _hurd_internal_post_signal (struct hurd_sigstate *ss,
 struct machine_thread_all_state;
 extern struct sigcontext *
 _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
-			int signo, long int sigcode,
+			int signo, const struct hurd_signal_detail *detail,
 			int rpc_wait, struct machine_thread_all_state *state);
 
 /* Function run by the signal thread to receive from the signal port.  */
diff --git a/hurd/hurd/sigpreempt.h b/hurd/hurd/sigpreempt.h
index 4042ea2448..1bd6589e32 100644
--- a/hurd/hurd/sigpreempt.h
+++ b/hurd/hurd/sigpreempt.h
@@ -23,6 +23,7 @@ Cambridge, MA 02139, USA.  */
 #include <errno.h>
 #include <signal.h>		/* For sigset_t, sighandler_t, SIG_ERR.  */
 struct hurd_sigstate;		/* <hurd/signal.h> */
+struct hurd_signal_detail;	/* <hurd/signal.h> */
 
 struct hurd_signal_preempter
   {
@@ -39,7 +40,7 @@ struct hurd_signal_preempter
        is processed as if the return value were its handler setting.  */
     sighandler_t (*preempter) (struct hurd_signal_preempter *preempter,
 			       struct hurd_sigstate *ss,
-			       int *signo, long int *sigcode, int *sigerror);
+			       int *signo, struct hurd_signal_detail *detail);
     /* If PREEMPTER is null, act as if it returned HANDLER.  */
     sighandler_t handler;
 
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index b1a551d7f3..2a517cfa5a 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -428,7 +428,7 @@ sigset_t _hurdsig_preempted_set;
 /* Deliver a signal.  SS is not locked.  */
 void
 _hurd_internal_post_signal (struct hurd_sigstate *ss,
-			    int signo, long int sigcode, int sigerror,
+			    int signo, struct hurd_signal_detail *detail,
 			    mach_port_t reply_port,
 			    mach_msg_type_name_t reply_port_type,
 			    int untraced)
@@ -459,10 +459,9 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
   void mark_pending (void)
     {
       __sigaddset (&ss->pending, signo);
-      /* Save the code to be given to the handler when SIGNO is
+      /* Save the details to be given to the handler when SIGNO is
 	 unblocked.  */
-      ss->pending_data[signo].code = sigcode;
-      ss->pending_data[signo].error = sigerror;
+      ss->pending_data[signo] = *detail;
     }
 
   /* Suspend the process with SIGNO.  */
@@ -540,8 +539,8 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
 
   handler = SIG_ERR;
   for (pe = ss->preempters; pe && handler == SIG_ERR; pe = pe->next)
-    if (HURD_PREEMPT_SIGNAL_P (pe, signo, sigcode))
-      handler = (*pe->preempter) (pe, ss, &signo, &sigcode, &sigerror);
+    if (HURD_PREEMPT_SIGNAL_P (pe, signo, detail->code))
+      handler = (*pe->preempter) (pe, ss, &signo, detail);
 
   if (handler == SIG_ERR && (__sigmask (signo) & _hurdsig_preempted_set))
     {
@@ -1061,14 +1060,18 @@ _S_msg_sig_post (mach_port_t me,
 		 mach_port_t refport)
 {
   error_t err;
+  struct hurd_signal_detail d;
 
   if (err = signal_allowed (signo, refport))
     return err;
 
+  d.code = sigcode;
+  d.exc = 0;
+
   /* Post the signal to the designated signal-receiving thread.  This will
      reply when the signal can be considered delivered.  */
   _hurd_internal_post_signal (_hurd_thread_sigstate (_hurd_sigthread),
-			      signo, sigcode, 0, reply_port, reply_port_type,
+			      signo, &d, reply_port, reply_port_type,
 			      0); /* Stop if traced.  */
 
   return MIG_NO_REPLY;		/* Already replied.  */
@@ -1085,14 +1088,18 @@ _S_msg_sig_post_untraced (mach_port_t me,
 			  mach_port_t refport)
 {
   error_t err;
+  struct hurd_signal_detail d;
 
   if (err = signal_allowed (signo, refport))
     return err;
 
+  d.code = sigcode;
+  d.exc = 0;
+
   /* Post the signal to the designated signal-receiving thread.  This will
      reply when the signal can be considered delivered.  */
   _hurd_internal_post_signal (_hurd_thread_sigstate (_hurd_sigthread),
-			      signo, sigcode, 0, reply_port, reply_port_type,
+			      signo, &d, reply_port, reply_port_type,
 			      1); /* Untraced flag. */
 
   return MIG_NO_REPLY;		/* Already replied.  */
diff --git a/sysdeps/mach/hurd/sysd-stdio.c b/sysdeps/mach/hurd/sysd-stdio.c
index 85dd04bad4..c4bcf73d9b 100644
--- a/sysdeps/mach/hurd/sysd-stdio.c
+++ b/sysdeps/mach/hurd/sysd-stdio.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 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
@@ -34,7 +34,11 @@ fd_fail (struct hurd_fd *fd, error_t err)
 {
   int signo = _hurd_fd_error_signal (err);
   if (signo)
-    _hurd_raise_signal (NULL, signo, __stdio_fileno (fd), err);
+    {
+      const struct hurd_signal_detail detail
+	= { code: __stdio_fileno (fd), error: err, exc: 0 };
+      _hurd_raise_signal (NULL, signo, &detail);
+    }
   errno = err;
   return -1;
 }
diff --git a/sysdeps/stub/sched_getp.c b/sysdeps/stub/sched_getp.c
index 081458a1b6..3fc0b458c1 100644
--- a/sysdeps/stub/sched_getp.c
+++ b/sysdeps/stub/sched_getp.c
@@ -17,12 +17,13 @@ not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
+#include <sys/types.h>
 #include <sched.h>
 
 
 /* Retrieve scheduling parameters for a particular process.  */
 int
-__sched_getparam (pid_t pid, struct sched_param *param)
+__sched_getparam (pid_t pid, struct sched_params *param)
 {
   errno = ENOSYS;
   return -1;
diff --git a/sysdeps/stub/sched_gets.c b/sysdeps/stub/sched_gets.c
index 4cbfb0e76b..bb64838908 100644
--- a/sysdeps/stub/sched_gets.c
+++ b/sysdeps/stub/sched_gets.c
@@ -18,6 +18,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
 #include <sched.h>
+#include <sys/types.h>
 
 
 /* Retrieve scheduling algorithm for a particular purpose.  */
diff --git a/sysdeps/stub/sched_rr_gi.c b/sysdeps/stub/sched_rr_gi.c
index 27344e0dc3..b818561287 100644
--- a/sysdeps/stub/sched_rr_gi.c
+++ b/sysdeps/stub/sched_rr_gi.c
@@ -18,6 +18,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
 #include <sched.h>
+#include <sys/types.h>
 
 
 /* Get the SCHED_RR interval for the named process.  */
diff --git a/sysdeps/stub/sched_setp.c b/sysdeps/stub/sched_setp.c
index 2830618700..10b0cb3c6c 100644
--- a/sysdeps/stub/sched_setp.c
+++ b/sysdeps/stub/sched_setp.c
@@ -17,12 +17,13 @@ not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
+#include <sys/types.h>
 #include <sched.h>
 
 
 /* Set scheduling parameters for a process.  */
 int
-__sched_setparam (pid_t pid, const struct sched_param *param)
+__sched_setparam (pid_t pid, const struct sched_params *param)
 {
   errno = ENOSYS;
   return -1;
diff --git a/sysdeps/stub/sched_sets.c b/sysdeps/stub/sched_sets.c
index e013e7a554..99113b1ad7 100644
--- a/sysdeps/stub/sched_sets.c
+++ b/sysdeps/stub/sched_sets.c
@@ -18,11 +18,12 @@ Boston, MA 02111-1307, USA.  */
 
 #include <errno.h>
 #include <sched.h>
+#include <sys/types.h>
 
 
 /* Set scheduling algorithm and/or parameters for a process.  */
 int
-__sched_setscheduler (pid_t pid, int policy, const struct sched_param *param)
+__sched_setscheduler (pid_t pid, int policy, const struct sched_params *param)
 {
   errno = ENOSYS;
   return -1;
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index 5c59095bbe..375ededb8a 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -89,7 +89,7 @@ int mlock __P ((__caddr_t __addr, size_t __len));
 int munlock __P ((__caddr_t __addr, size_t __len));
 
 /* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length
-   NEW_LEN.  If MAY_MOVE is MREMAP_MAXMOVE the returned address may
+   NEW_LEN.  If MAY_MOVE is MREMAP_MAYMOVE the returned address may
    differ from ADDR.  */
 __caddr_t __mremap __P ((__caddr_t __addr, size_t __old_len, size_t __new_len,
 			 int __may_move));
diff --git a/wcsmbs/wcswidth.c b/wcsmbs/wcswidth.c
index ae074f23b7..841fb9b195 100644
--- a/wcsmbs/wcswidth.c
+++ b/wcsmbs/wcswidth.c
@@ -1,6 +1,6 @@
 /* Copyright (C) 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
-Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edi>, 1996.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
 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
diff --git a/wcsmbs/wcwidth.c b/wcsmbs/wcwidth.c
index 5c7f8b63e9..f3095687a4 100644
--- a/wcsmbs/wcwidth.c
+++ b/wcsmbs/wcwidth.c
@@ -1,6 +1,6 @@
 /* Copyright (C) 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
-Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edi>, 1996.
+Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
 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