summaryrefslogtreecommitdiff
path: root/hurd/hurdsig.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-08-17 22:55:22 +0000
committerRoland McGrath <roland@gnu.org>1995-08-17 22:55:22 +0000
commit3fe9de0da5e8ad28a8ba86cc26ae6057984bde10 (patch)
tree248915736b58d19467d401ad3295c7113aee56cf /hurd/hurdsig.c
parent191abc516c6f0ecd02f84ec98994b223252b48d7 (diff)
Thu Aug 17 16:18:38 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* hurd/intr-msg.c: Use INTR_MSG_TRAP macro from machine-dependent "intr-msg.h" for special syscall code, instead of i386-specific asm. * hurd/hurdsig.c: Use INTR_MSG_BACK_OUT macro from machine-dependent "intr-msg.h" before mutating thread state to skip RPC. * sysdeps/mach/hurd/i386/trampoline.c: If PC is inside _hurd_intr_rpc_mach_msg special syscall code, use real SP saved in %ecx. * Makeconfig (link-libc): New variable; use shared library if available. (+link): Use it. * sysdeps/mach/hurd/fork.c (_hurd_fork_locks): Variable removed. Instead, declare with `symbol_set_declare'. (fork): Use symbol_set_* macros for _hurd_fork_locks. Use SS->thread instead of __mach_thread_self (). Suspend all other threads during task_create and port copying.
Diffstat (limited to 'hurd/hurdsig.c')
-rw-r--r--hurd/hurdsig.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index 10dbceb4f4..ca4e22925b 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -250,7 +250,8 @@ interrupted_reply_port_location (struct machine_thread_all_state *thread_state,
return portloc;
}
-
+
+#include "intr-msg.h"
/* SS->thread is suspended.
@@ -274,7 +275,7 @@ _hurdsig_abort_rpcs (struct hurd_sigstate *ss, int signo, int sigthread,
mach_msg_type_name_t reply_port_type,
int untraced)
{
- extern const void _hurd_intr_rpc_msg_do_trap, _hurd_intr_rpc_msg_in_trap;
+ extern const void _hurd_intr_rpc_msg_in_trap;
mach_port_t rcv_port = MACH_PORT_NULL;
mach_port_t intr_port;
@@ -294,6 +295,7 @@ _hurdsig_abort_rpcs (struct hurd_sigstate *ss, int signo, int sigthread,
/* The thread is about to do the RPC, but hasn't yet entered
mach_msg. Mutate the thread's state so it knows not to try
the RPC. */
+ INTR_MSG_BACK_OUT (&state->basic);
MACHINE_THREAD_STATE_SET_PC (&state->basic,
&_hurd_intr_rpc_msg_in_trap);
state->basic.SYSRETURN = MACH_SEND_INTERRUPTED;