1998-08-06 Mark Kettenis <kettenis@phys.uva.nl>
authorRoland McGrath <roland@gnu.org>
Sun, 18 Oct 1998 23:19:12 +0000 (23:19 +0000)
committerRoland McGrath <roland@gnu.org>
Sun, 18 Oct 1998 23:19:12 +0000 (23:19 +0000)
[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.

ChangeLog
hurd/intr-msg.c
mach/Machrules

index 6acc257..d9eee6d 100644 (file)
--- 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.
index eb7adbe..c7c45e7 100644 (file)
@@ -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
index b5a6622..c52db8e 100644 (file)
@@ -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 __