summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1998-10-18 23:19:12 +0000
committerRoland McGrath <roland@gnu.org>1998-10-18 23:19:12 +0000
commit37eb58de74f83860949407c88088bf55964157e5 (patch)
treeef9e61b44209053837e93e468c1d7cadd822de3f
parenta13d5ca5e475ba92fa1aaf909f2f24bc88f3f205 (diff)
1998-08-06 Mark Kettenis <kettenis@phys.uva.nl>
[submitted 1998-08-06] * mach/Machrules: Create target directory and force re-evaluation of Makefile to prevent `make' from optimizing away most of the implicit rules and `vpath' directives. * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): If _hurd_msgport_thread is null, short-circuit to __mach_msg.
-rw-r--r--ChangeLog10
-rw-r--r--hurd/intr-msg.c18
-rw-r--r--mach/Machrules9
3 files changed, 34 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 6acc257c15..d9eee6df50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
+1998-08-06 Mark Kettenis <kettenis@phys.uva.nl>
+
+ [submitted 1998-08-06]
+ * mach/Machrules: Create target directory and force re-evaluation
+ of Makefile to prevent `make' from optimizing away most of the
+ implicit rules and `vpath' directives.
+
1998-10-19 Roland McGrath <roland@baalperazim.frob.com>
+ * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): If _hurd_msgport_thread
+ is null, short-circuit to __mach_msg.
+
* sysdeps/mach/hurd/i386/init-first.c (posixland_init): New function,
broken out of init1.
(init1) [PIC]: Call it.
diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
index eb7adbef66..c7c45e7023 100644
--- a/hurd/intr-msg.c
+++ b/hurd/intr-msg.c
@@ -1,5 +1,5 @@
/* Replacement for mach_msg used in interruptible Hurd RPCs.
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 95, 96, 97, 98 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,11 +34,23 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
mach_msg_timeout_t timeout,
mach_port_t notify)
{
- struct hurd_sigstate *ss = _hurd_self_sigstate ();
error_t err;
+ struct hurd_sigstate *ss;
+ int user_timeout;
+
+ if (_hurd_msgport_thread == MACH_PORT_NULL)
+ {
+ /* The signal thread is not set up yet, so we cannot do the
+ normal signal magic. Do a simple uninterruptible RPC instead. */
+ return __mach_msg (msg, option, send_size, rcv_size, rcv_name,
+ timeout, notify);
+ }
+
+ ss = _hurd_self_sigstate ();
+
/* Notice now if the user requested a timeout. OPTION may have the bit
added by interruption semantics, and we must distinguish. */
- int user_timeout = option & MACH_RCV_TIMEOUT;
+ user_timeout = option & MACH_RCV_TIMEOUT;
/* Tell the signal thread that we are doing an interruptible RPC on
this port. If we get a signal and should return EINTR, the signal
diff --git a/mach/Machrules b/mach/Machrules
index b5a6622691..c52db8e961 100644
--- a/mach/Machrules
+++ b/mach/Machrules
@@ -44,6 +44,15 @@ endif
include ../Makeconfig
+# This makefile contains a lot of implicit rules that get optimized
+# away if the target directory does not exist.
+ifndef no_deps
+-include $(objpfx)dummy.mk
+endif
+$(objpfx)dummy.mk:
+ $(make-target-directory)
+ echo '# Empty' > $@
+
MIGFLAGS = -DMACH_IPC_COMPAT=0 -DSTANDALONE -DTypeCheck=0 \
$(+includes) $(migdefines) -subrprefix __