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/dev | |
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/dev')
-rw-r--r-- | sys/dev/aac/aac.c | 2 | ||||
-rw-r--r-- | sys/dev/atkbdc/psm.c | 2 | ||||
-rw-r--r-- | sys/dev/bktr/bktr_core.c | 2 | ||||
-rw-r--r-- | sys/dev/firewire/firewire.c | 2 | ||||
-rw-r--r-- | sys/dev/kbd/kbd.c | 4 | ||||
-rw-r--r-- | sys/dev/mse/mse.c | 2 | ||||
-rw-r--r-- | sys/dev/nmdm/nmdm.c | 4 | ||||
-rw-r--r-- | sys/dev/random/randomdev.c | 2 | ||||
-rw-r--r-- | sys/dev/sab/sab.c | 2 | ||||
-rw-r--r-- | sys/dev/snp/snp.c | 4 | ||||
-rw-r--r-- | sys/dev/sound/midi/midibuf.c | 4 | ||||
-rw-r--r-- | sys/dev/sound/pcm/channel.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/ucom.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/ugen.c | 4 | ||||
-rw-r--r-- | sys/dev/usb/uhid.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/ums.c | 4 | ||||
-rw-r--r-- | sys/dev/usb/usb.c | 2 | ||||
-rw-r--r-- | sys/dev/zs/zs.c | 2 |
18 files changed, 24 insertions, 24 deletions
diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index 8466bd8..bb54691 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -2717,7 +2717,7 @@ aac_handle_aif(struct aac_softc *sc, struct aac_fib *fib) if (sc->aac_state & AAC_STATE_AIF_SLEEPER) wakeup(sc->aac_aifq); /* Wakeup any poll()ers */ - selwakeup(&sc->rcv_select); + selwakeuppri(&sc->rcv_select, PRIBIO); } AAC_LOCK_RELEASE(&sc->aac_aifq_lock); diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c index ef98da4..2c14bbe 100644 --- a/sys/dev/atkbdc/psm.c +++ b/sys/dev/atkbdc/psm.c @@ -2371,7 +2371,7 @@ psmintr(void *arg) sc->state &= ~PSM_ASLP; wakeup( sc); } - selwakeup(&sc->rsel); + selwakeuppri(&sc->rsel, PZERO); } } diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c index 19795a2..b9d21b8 100644 --- a/sys/dev/bktr/bktr_core.c +++ b/sys/dev/bktr/bktr_core.c @@ -821,7 +821,7 @@ common_bktr_intr( void *arg ) /* If someone has a select() on /dev/vbi, inform them */ if (SEL_WAITING(&bktr->vbi_select)) { - selwakeup(&bktr->vbi_select); + selwakeuppri(&bktr->vbi_select, VBIPRI); } diff --git a/sys/dev/firewire/firewire.c b/sys/dev/firewire/firewire.c index be01cc4..9844e7b 100644 --- a/sys/dev/firewire/firewire.c +++ b/sys/dev/firewire/firewire.c @@ -1963,7 +1963,7 @@ fw_rcv(struct fw_rcv_buf *rb) #else if (&xferq->rsel.si_pid != 0) #endif - selwakeup(&xferq->rsel); + selwakeuppri(&xferq->rsel, FWPRI); if (xferq->flag & FWXFERQ_WAKEUP) { xferq->flag &= ~FWXFERQ_WAKEUP; wakeup((caddr_t)xferq); diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c index 1e8785d..f5dd583 100644 --- a/sys/dev/kbd/kbd.c +++ b/sys/dev/kbd/kbd.c @@ -676,7 +676,7 @@ genkbd_event(keyboard_t *kbd, int event, void *arg) sc->gkb_flags &= ~KB_ASLEEP; wakeup(sc); } - selwakeup(&sc->gkb_rsel); + selwakeuppri(&sc->gkb_rsel, PZERO); return 0; default: return EINVAL; @@ -747,7 +747,7 @@ genkbd_event(keyboard_t *kbd, int event, void *arg) sc->gkb_flags &= ~KB_ASLEEP; wakeup(sc); } - selwakeup(&sc->gkb_rsel); + selwakeuppri(&sc->gkb_rsel, PZERO); } return 0; diff --git a/sys/dev/mse/mse.c b/sys/dev/mse/mse.c index bb79f28..408bbf7 100644 --- a/sys/dev/mse/mse.c +++ b/sys/dev/mse/mse.c @@ -751,7 +751,7 @@ mseintr(arg) sc->sc_flags &= ~MSESC_WANT; wakeup(sc); } - selwakeup(&sc->sc_selp); + selwakeuppri(&sc->sc_selp, MSEPRI); } } diff --git a/sys/dev/nmdm/nmdm.c b/sys/dev/nmdm/nmdm.c index 1511e9b..3227b11 100644 --- a/sys/dev/nmdm/nmdm.c +++ b/sys/dev/nmdm/nmdm.c @@ -451,11 +451,11 @@ wakeup_other(struct tty *tp, int flag) GETPARTS(tp, ourpart, otherpart); if (flag & FREAD) { - selwakeup(&otherpart->nm_tty.t_rsel); + selwakeuppri(&otherpart->nm_tty.t_rsel, TTIPRI); wakeup(TSA_PTC_READ((&otherpart->nm_tty))); } if (flag & FWRITE) { - selwakeup(&otherpart->nm_tty.t_wsel); + selwakeuppri(&otherpart->nm_tty.t_wsel, TTOPRI); wakeup(TSA_PTC_WRITE((&otherpart->nm_tty))); } } diff --git a/sys/dev/random/randomdev.c b/sys/dev/random/randomdev.c index 6bbe200..48618e9 100644 --- a/sys/dev/random/randomdev.c +++ b/sys/dev/random/randomdev.c @@ -426,7 +426,7 @@ random_unblock(void) { if (!random_systat.seeded) { random_systat.seeded = 1; - selwakeup(&random_systat.rsel); + selwakeuppri(&random_systat.rsel, PUSER); wakeup(&random_systat); } } diff --git a/sys/dev/sab/sab.c b/sys/dev/sab/sab.c index 2eeb7f0..d8ac3d4 100644 --- a/sys/dev/sab/sab.c +++ b/sys/dev/sab/sab.c @@ -799,7 +799,7 @@ sabttystart(struct tty *tp) tp->t_state &= ~TS_SO_OLOWAT; wakeup(TSA_OLOWAT(tp)); } - selwakeup(&tp->t_wsel); + selwakeuppri(&tp->t_wsel, TTOPRI); if (tp->t_outq.c_cc == 0) { if ((tp->t_state & (TS_BUSY | TS_SO_OCOMPLETE)) == TS_SO_OCOMPLETE && tp->t_outq.c_cc == 0) { diff --git a/sys/dev/snp/snp.c b/sys/dev/snp/snp.c index d08ff3f..4c4115d 100644 --- a/sys/dev/snp/snp.c +++ b/sys/dev/snp/snp.c @@ -370,7 +370,7 @@ snp_in(snp, buf, n) snp->snp_flags &= ~SNOOP_RWAIT; wakeup(snp); } - selwakeup(&snp->snp_sel); + selwakeuppri(&snp->snp_sel, PZERO + 1); return (n); } @@ -444,7 +444,7 @@ snp_detach(snp) snp->snp_target = NODEV; detach_notty: - selwakeup(&snp->snp_sel); + selwakeuppri(&snp->snp_sel, PZERO + 1); if ((snp->snp_flags & SNOOP_OPEN) == 0) free(snp, M_SNP); diff --git a/sys/dev/sound/midi/midibuf.c b/sys/dev/sound/midi/midibuf.c index 8b4eda7..f444405 100644 --- a/sys/dev/sound/midi/midibuf.c +++ b/sys/dev/sound/midi/midibuf.c @@ -358,7 +358,7 @@ queuerawdata(midi_dbuf *dbuf, char *data, int len) /* Wake up the processes sleeping on input data. */ cv_broadcast(&dbuf->cv_in); if (SEL_WAITING(&dbuf->sel) && dbuf->rl >= dbuf->blocksize) - selwakeup(&dbuf->sel); + selwakeuppri(&dbuf->sel, PRIBIO); } static void @@ -399,5 +399,5 @@ deleterawdata(midi_dbuf *dbuf, int len) /* Wake up the processes sleeping on queueing. */ cv_broadcast(&dbuf->cv_out); if (SEL_WAITING(&dbuf->sel) && dbuf->fl >= dbuf->blocksize) - selwakeup(&dbuf->sel); + selwakeuppri(&dbuf->sel, PRIBIO); } diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index c17b219..7a1c906 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -116,7 +116,7 @@ chn_wakeup(struct pcm_channel *c) CHN_LOCKASSERT(c); if (SEL_WAITING(sndbuf_getsel(bs)) && chn_polltrigger(c)) - selwakeup(sndbuf_getsel(bs)); + selwakeuppri(sndbuf_getsel(bs), PRIBIO); wakeup(bs); } diff --git a/sys/dev/usb/ucom.c b/sys/dev/usb/ucom.c index b398661..a57d6f8 100644 --- a/sys/dev/usb/ucom.c +++ b/sys/dev/usb/ucom.c @@ -875,7 +875,7 @@ ucomstart(struct tty *tp) CLR(tp->t_state, TS_SO_OLOWAT); wakeup(TSA_OLOWAT(tp)); } - selwakeup(&tp->t_wsel); + selwakeuppri(&tp->t_wsel, TTIPRI); if (tp->t_outq.c_cc == 0) { if (ISSET(tp->t_state, TS_BUSY | TS_SO_OCOMPLETE) == TS_SO_OCOMPLETE && tp->t_outq.c_cc == 0) { diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index bf73938..8740c3d 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -945,7 +945,7 @@ ugenintr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status) DPRINTFN(5, ("ugen_intr: waking %p\n", sce)); wakeup(sce); } - selwakeup(&sce->rsel); + selwakeuppri(&sce->rsel, PZERO); } Static void @@ -1005,7 +1005,7 @@ ugen_isoc_rintr(usbd_xfer_handle xfer, usbd_private_handle addr, DPRINTFN(5, ("ugen_isoc_rintr: waking %p\n", sce)); wakeup(sce); } - selwakeup(&sce->rsel); + selwakeuppri(&sce->rsel, PZERO); } Static usbd_status diff --git a/sys/dev/usb/uhid.c b/sys/dev/usb/uhid.c index c61e4ba..2451542 100644 --- a/sys/dev/usb/uhid.c +++ b/sys/dev/usb/uhid.c @@ -383,7 +383,7 @@ uhid_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status) DPRINTFN(5, ("uhid_intr: waking %p\n", &sc->sc_q)); wakeup(&sc->sc_q); } - selwakeup(&sc->sc_rsel); + selwakeuppri(&sc->sc_rsel, PZERO); if (sc->sc_async != NULL) { DPRINTFN(3, ("uhid_intr: sending SIGIO %p\n", sc->sc_async)); PROC_LOCK(sc->sc_async); diff --git a/sys/dev/usb/ums.c b/sys/dev/usb/ums.c index f09fba7..dea1e0b 100644 --- a/sys/dev/usb/ums.c +++ b/sys/dev/usb/ums.c @@ -394,7 +394,7 @@ ums_detach(device_t self) } if (sc->state & UMS_SELECT) { sc->state &= ~UMS_SELECT; - selwakeup(&sc->rsel); + selwakeuppri(&sc->rsel, PZERO); } destroy_dev(sc->dev); @@ -533,7 +533,7 @@ ums_add_to_queue(struct ums_softc *sc, int dx, int dy, int dz, int buttons) } if (sc->state & UMS_SELECT) { sc->state &= ~UMS_SELECT; - selwakeup(&sc->rsel); + selwakeuppri(&sc->rsel, PZERO); } } Static int diff --git a/sys/dev/usb/usb.c b/sys/dev/usb/usb.c index 846a82f..dd2e2b3 100644 --- a/sys/dev/usb/usb.c +++ b/sys/dev/usb/usb.c @@ -810,7 +810,7 @@ usb_add_event(int type, struct usb_event *uep) TAILQ_INSERT_TAIL(&usb_events, ueq, next); usb_nevents++; wakeup(&usb_events); - selwakeup(&usb_selevent); + selwakeuppri(&usb_selevent, PZERO); if (usb_async_proc != NULL) { PROC_LOCK(usb_async_proc); psignal(usb_async_proc, SIGIO); diff --git a/sys/dev/zs/zs.c b/sys/dev/zs/zs.c index f3687ff..7e58049 100644 --- a/sys/dev/zs/zs.c +++ b/sys/dev/zs/zs.c @@ -600,7 +600,7 @@ zsttystart(struct tty *tp) tp->t_state &= ~TS_SO_OLOWAT; wakeup(TSA_OLOWAT(tp)); } - selwakeup(&tp->t_wsel); + selwakeuppri(&tp->t_wsel, TTOPRI); if (tp->t_outq.c_cc == 0) { if ((tp->t_state & (TS_BUSY | TS_SO_OCOMPLETE)) == TS_SO_OCOMPLETE && tp->t_outq.c_cc == 0) { |