summaryrefslogtreecommitdiffstats
path: root/sys/i4b
diff options
context:
space:
mode:
authortanimura <tanimura@FreeBSD.org>2003-11-09 09:17:26 +0000
committertanimura <tanimura@FreeBSD.org>2003-11-09 09:17:26 +0000
commit7eade05dfa5c79c8765c89ae76635f31451fe886 (patch)
tree19de3ca43ba82c3cf15a4a6c7fba917e0f7e416b /sys/i4b
parent9cbd7fa025947081790184770a6c74511b0b0a44 (diff)
downloadFreeBSD-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.c6
-rw-r--r--sys/i4b/driver/i4b_tel.c10
-rw-r--r--sys/i4b/layer4/i4b_i4bdrv.c4
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);
}
}
OpenPOWER on IntegriCloud