summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libports/ChangeLog5
-rw-r--r--libports/end-rpc.c10
2 files changed, 10 insertions, 5 deletions
diff --git a/libports/ChangeLog b/libports/ChangeLog
index c7b6cd48..fc4bc0bc 100644
--- a/libports/ChangeLog
+++ b/libports/ChangeLog
@@ -1,3 +1,8 @@
+Thu Feb 25 10:31:57 1999 Thomas Bushnell, BSG <tb@mit.edu>
+
+ * end-rpc.c (ports_end_rpc): Signal ports_block anytime an rpc
+ ends and someone is waiting on an inhibition.
+
1999-01-01 Roland McGrath <roland@baalperazim.frob.com>
* interrupt-on-notify.c (ports_interrupt_self_on_notification): Use
diff --git a/libports/end-rpc.c b/libports/end-rpc.c
index d2aceedf..47fd1ae7 100644
--- a/libports/end-rpc.c
+++ b/libports/end-rpc.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
Written by Michael I. Bushnell.
This file is part of the GNU Hurd.
@@ -38,10 +38,10 @@ ports_end_rpc (void *port, struct rpc_info *info)
_ports_total_rpcs--;
pi->bucket->rpcs--;
- if ((!pi->current_rpcs && (pi->flags & PORT_INHIBIT_WAIT))
- || (!pi->bucket->rpcs && (pi->bucket->flags & PORT_BUCKET_INHIBIT_WAIT))
- || (!pi->class->rpcs && (pi->class->flags & PORT_CLASS_INHIBIT_WAIT))
- || (!_ports_total_rpcs && (_ports_flags & _PORTS_INHIBIT_WAIT)))
+ if ((pi->flags & PORT_INHIBIT_WAIT)
+ || (pi->bucket->flags & PORT_BUCKET_INHIBIT_WAIT)
+ || (pi->class->flags & PORT_CLASS_INHIBIT_WAIT)
+ || (_ports_flags & _PORTS_INHIBIT_WAIT))
condition_broadcast (&_ports_block);
/* This removes the current thread's rpc (which should be INFO) from the