diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | hurd/hurd/fd.h | 10 | ||||
-rw-r--r-- | hurd/hurd/signal.h | 41 | ||||
-rw-r--r-- | hurd/hurd/sigpreempt.h | 3 | ||||
-rw-r--r-- | hurd/hurdsig.c | 23 | ||||
-rw-r--r-- | sysdeps/mach/hurd/sysd-stdio.c | 8 | ||||
-rw-r--r-- | sysdeps/stub/sched_getp.c | 3 | ||||
-rw-r--r-- | sysdeps/stub/sched_gets.c | 1 | ||||
-rw-r--r-- | sysdeps/stub/sched_rr_gi.c | 1 | ||||
-rw-r--r-- | sysdeps/stub/sched_setp.c | 3 | ||||
-rw-r--r-- | sysdeps/stub/sched_sets.c | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/mman.h | 2 | ||||
-rw-r--r-- | wcsmbs/wcswidth.c | 2 | ||||
-rw-r--r-- | wcsmbs/wcwidth.c | 2 |
14 files changed, 81 insertions, 37 deletions
@@ -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 4747c78..b6402ea 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 4b439b6..27349d3 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 4042ea2..1bd6589 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 b1a551d..2a517cf 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 85dd04b..c4bcf73 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 081458a..3fc0b45 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 4cbfb0e..bb64838 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 27344e0..b818561 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 2830618..10b0cb3 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 e013e7a..99113b1 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 5c59095..375eded 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 ae074f2..841fb9b 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 5c7f8b6..f309568 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 |