diff options
author | tanimura <tanimura@FreeBSD.org> | 2003-11-09 09:17:26 +0000 |
---|---|---|
committer | tanimura <tanimura@FreeBSD.org> | 2003-11-09 09:17:26 +0000 |
commit | 7eade05dfa5c79c8765c89ae76635f31451fe886 (patch) | |
tree | 19de3ca43ba82c3cf15a4a6c7fba917e0f7e416b /sys/i4b | |
parent | 9cbd7fa025947081790184770a6c74511b0b0a44 (diff) | |
download | FreeBSD-src-7eade05dfa5c79c8765c89ae76635f31451fe886.zip FreeBSD-src-7eade05dfa5c79c8765c89ae76635f31451fe886.tar.gz |
- Implement selwakeuppri() which allows raising the priority of a
thread being waken up. The thread waken up can run at a priority as
high as after tsleep().
- Replace selwakeup()s with selwakeuppri()s and pass appropriate
priorities.
- Add cv_broadcastpri() which raises the priority of the broadcast
threads. Used by selwakeuppri() if collision occurs.
Not objected in: -arch, -current
Diffstat (limited to 'sys/i4b')
-rw-r--r-- | sys/i4b/driver/i4b_rbch.c | 6 | ||||
-rw-r--r-- | sys/i4b/driver/i4b_tel.c | 10 | ||||
-rw-r--r-- | sys/i4b/layer4/i4b_i4bdrv.c | 4 |
3 files changed, 10 insertions, 10 deletions
diff --git a/sys/i4b/driver/i4b_rbch.c b/sys/i4b/driver/i4b_rbch.c index d89e2c2..40f2c24 100644 --- a/sys/i4b/driver/i4b_rbch.c +++ b/sys/i4b/driver/i4b_rbch.c @@ -738,7 +738,7 @@ rbch_rx_data_rdy(int unit) { NDBGL4(L4_RBCHDBG, "unit %d, NO wakeup", unit); } - selwakeup(&rbch_softc[unit].selp); + selwakeuppri(&rbch_softc[unit].selp, TTIPRI); } /*---------------------------------------------------------------------------* @@ -759,7 +759,7 @@ rbch_tx_queue_empty(int unit) { NDBGL4(L4_RBCHDBG, "unit %d, NO wakeup", unit); } - selwakeup(&rbch_softc[unit].selp); + selwakeuppri(&rbch_softc[unit].selp, TTOPRI); } /*---------------------------------------------------------------------------* @@ -771,7 +771,7 @@ rbch_activity(int unit, int rxtx) { if (rbch_softc[unit].sc_cd) rbch_softc[unit].sc_cd->last_active_time = SECOND; - selwakeup(&rbch_softc[unit].selp); + selwakeuppri(&rbch_softc[unit].selp, TTIPRI); } /*---------------------------------------------------------------------------* diff --git a/sys/i4b/driver/i4b_tel.c b/sys/i4b/driver/i4b_tel.c index e13b5f4..c629a44 100644 --- a/sys/i4b/driver/i4b_tel.c +++ b/sys/i4b/driver/i4b_tel.c @@ -791,7 +791,7 @@ tel_connect(int unit, void *cdp) sc->devstate &= ~ST_RDWAITDATA; wakeup( &sc->result); } - selwakeup(&sc->selp); + selwakeuppri(&sc->selp, TTIPRI); } } @@ -835,7 +835,7 @@ tel_disconnect(int unit, void *cdp) sc->devstate &= ~ST_RDWAITDATA; wakeup( &sc->result); } - selwakeup(&sc->selp); + selwakeuppri(&sc->selp, TTIPRI); if (sc->devstate & ST_TONE) { sc->devstate &= ~ST_TONE; @@ -864,7 +864,7 @@ tel_dialresponse(int unit, int status, cause_t cause) sc->devstate &= ~ST_RDWAITDATA; wakeup( &sc->result); } - selwakeup(&sc->selp); + selwakeuppri(&sc->selp, TTIPRI); } } @@ -891,7 +891,7 @@ tel_rx_data_rdy(int unit) sc->devstate &= ~ST_RDWAITDATA; wakeup( &sc->isdn_linktab->rx_queue); } - selwakeup(&sc->selp); + selwakeuppri(&sc->selp, TTOPRI); } /*---------------------------------------------------------------------------* @@ -912,7 +912,7 @@ tel_tx_queue_empty(int unit) if(sc->devstate & ST_TONE) { tel_tone(sc); } else { - selwakeup(&sc->selp); + selwakeuppri(&sc->selp, TTIPRI); } } diff --git a/sys/i4b/layer4/i4b_i4bdrv.c b/sys/i4b/layer4/i4b_i4bdrv.c index d98fca6..95de760 100644 --- a/sys/i4b/layer4/i4b_i4bdrv.c +++ b/sys/i4b/layer4/i4b_i4bdrv.c @@ -820,7 +820,7 @@ i4bputqueue(struct mbuf *m) if(selflag) { selflag = 0; - selwakeup(&select_rd_info); + selwakeuppri(&select_rd_info, TTIPRI); } } @@ -863,6 +863,6 @@ i4bputqueue_hipri(struct mbuf *m) if(selflag) { selflag = 0; - selwakeup(&select_rd_info); + selwakeuppri(&select_rd_info, TTIPRI); } } |