]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE140-rx-tq-waiter-rework-20051007
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 8 Oct 2005 05:01:00 +0000 (05:01 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sat, 8 Oct 2005 05:01:00 +0000 (05:01 +0000)
Only Broadcast to wake threads if there are threads waiting.

(cherry picked from commit 8299e102c71ae0f3d04c17e089e8f960a7c2bb7e)

src/rx/rx.c

index 92b3457f1a78c802fd247810b6424055735dcb6d..baefb694c7cd4552288e78aa4325d28ba2926c37 100644 (file)
@@ -5171,13 +5171,13 @@ rxi_Start(struct rxevent *event, register struct rx_call *call,
                    call->flags &= ~RX_CALL_TQ_BUSY;
                    if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
                        dpf(("call %x has %d waiters and flags %d\n", call, call->tqWaiters, call->flags));
-                   }
 #ifdef RX_ENABLE_LOCKS
-                   osirx_AssertMine(&call->lock, "rxi_Start start");
-                   CV_BROADCAST(&call->cv_tq);
+                       osirx_AssertMine(&call->lock, "rxi_Start start");
+                       CV_BROADCAST(&call->cv_tq);
 #else /* RX_ENABLE_LOCKS */
-                   osi_rxWakeup(&call->tq);
+                       osi_rxWakeup(&call->tq);
 #endif /* RX_ENABLE_LOCKS */
+                   }
                    return;
                }
                if (call->error) {
@@ -5191,13 +5191,13 @@ rxi_Start(struct rxevent *event, register struct rx_call *call,
                    call->flags &= ~RX_CALL_TQ_BUSY;
                    if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
                        dpf(("call %x has %d waiters and flags %d\n", call, call->tqWaiters, call->flags));
-                   }
 #ifdef RX_ENABLE_LOCKS
-                   osirx_AssertMine(&call->lock, "rxi_Start middle");
-                   CV_BROADCAST(&call->cv_tq);
+                       osirx_AssertMine(&call->lock, "rxi_Start middle");
+                       CV_BROADCAST(&call->cv_tq);
 #else /* RX_ENABLE_LOCKS */
-                   osi_rxWakeup(&call->tq);
+                       osi_rxWakeup(&call->tq);
 #endif /* RX_ENABLE_LOCKS */
+                   }
                    rxi_CallError(call, call->error);
                    return;
                }
@@ -5279,13 +5279,13 @@ rxi_Start(struct rxevent *event, register struct rx_call *call,
            call->flags &= ~RX_CALL_TQ_BUSY;
            if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
                dpf(("call %x has %d waiters and flags %d\n", call, call->tqWaiters, call->flags));
-           }
 #ifdef RX_ENABLE_LOCKS
-           osirx_AssertMine(&call->lock, "rxi_Start end");
-           CV_BROADCAST(&call->cv_tq);
+               osirx_AssertMine(&call->lock, "rxi_Start end");
+               CV_BROADCAST(&call->cv_tq);
 #else /* RX_ENABLE_LOCKS */
-           osi_rxWakeup(&call->tq);
+               osi_rxWakeup(&call->tq);
 #endif /* RX_ENABLE_LOCKS */
+           }
        } else {
            call->flags |= RX_CALL_NEED_START;
        }