about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog18
-rw-r--r--hurd/new-fd.c5
-rw-r--r--hurd/port2fd.c3
3 files changed, 24 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e2b1827a0..cee4d64461 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+1999-08-22  Mark Kettenis  <kettenis@gnu.org>
+
+	* hurd/new-fd.c (_hurd_new_fd): Initialize fcntl flags.
+	* hurd/port2fd.c (_hurd_port2fd): Reset the fcntl flags when
+	installing PORT in the descriptor cell.
+
+1999-08-19  Roland McGrath  <roland@baalperazim.frob.com>
+
+	* sysdeps/mach/hurd/i386/intr-msg.h (INTR_MSG_TRAP): Mark OPTION and
+	TIMEOUT as outputs of the asm to indicate that the signal thread
+	might mutate them.
+	* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Short circuit to plain
+	mach_msg if only sending or only receiving (i.e., not an RPC).  When
+	making an RPC that might get interrupted, save OPTION and the portion
+	of the message buffer that gets clobbered by an EINTR reply message,
+	and properly restore them before attempting to retry the request
+	message send.
+
 1999-08-21  Mark Kettenis  <kettenis@gnu.org>
 
 	* stdio-common/vfscanf.c [! USE_IN_LIBIO]: Add necessary
diff --git a/hurd/new-fd.c b/hurd/new-fd.c
index 37ba82e334..47cbbc086c 100644
--- a/hurd/new-fd.c
+++ b/hurd/new-fd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 1999 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
@@ -33,6 +33,9 @@ _hurd_new_fd (io_t port, io_t ctty)
       /* Initialize the port cells.  */
       _hurd_port_init (&d->port, port);
       _hurd_port_init (&d->ctty, ctty);
+      
+      /* And the fcntl flags.  */
+      d->flags = 0;
     }
 
   return d;
diff --git a/hurd/port2fd.c b/hurd/port2fd.c
index 063f27b66e..16a5af04a4 100644
--- a/hurd/port2fd.c
+++ b/hurd/port2fd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 1999 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
@@ -67,6 +67,7 @@ _hurd_port2fd (struct hurd_fd *d, io_t port, int flags)
     mach_port_t old
       = _hurd_userlink_clear (&d->port.users) ? d->port.port : MACH_PORT_NULL;
     d->port.port = port;
+    d->flags = 0;
     if (old != MACH_PORT_NULL)
       __mach_port_deallocate (__mach_task_self (), old);
   }