diff options
author | tanimura <tanimura@FreeBSD.org> | 2001-03-14 07:29:47 +0000 |
---|---|---|
committer | tanimura <tanimura@FreeBSD.org> | 2001-03-14 07:29:47 +0000 |
commit | a6f258c4f0f90ea76335ae4af593f7482df5d7a4 (patch) | |
tree | 3e02aa536e35d86a0eb73fb532b481b978cfd764 /sys/dev/sound/midi/midi.c | |
parent | be9d069cf0df15e40cb07b595afbe56b5359b408 (diff) | |
download | FreeBSD-src-a6f258c4f0f90ea76335ae4af593f7482df5d7a4.zip FreeBSD-src-a6f258c4f0f90ea76335ae4af593f7482df5d7a4.tar.gz |
- Do not touch the Giant.
Requested by: jhb
- Initialize a mutex prior to locking it.
Spotted by: dcs
Diffstat (limited to 'sys/dev/sound/midi/midi.c')
-rw-r--r-- | sys/dev/sound/midi/midi.c | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c index 3d6a16c..ce272e0 100644 --- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -273,8 +273,6 @@ midiopen(dev_t i_dev, int flags, int mode, struct proc * p) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_open(i_dev, flags, mode, p); @@ -287,8 +285,6 @@ midiopen(dev_t i_dev, int flags, int mode, struct proc * p) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -297,8 +293,6 @@ midiclose(dev_t i_dev, int flags, int mode, struct proc * p) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_close(i_dev, flags, mode, p); @@ -311,8 +305,6 @@ midiclose(dev_t i_dev, int flags, int mode, struct proc * p) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -321,8 +313,6 @@ midiread(dev_t i_dev, struct uio * buf, int flag) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_read(i_dev, buf, flag); @@ -335,8 +325,6 @@ midiread(dev_t i_dev, struct uio * buf, int flag) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -345,8 +333,6 @@ midiwrite(dev_t i_dev, struct uio * buf, int flag) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_write(i_dev, buf, flag); @@ -356,8 +342,6 @@ midiwrite(dev_t i_dev, struct uio * buf, int flag) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -366,8 +350,6 @@ midiioctl(dev_t i_dev, u_long cmd, caddr_t arg, int mode, struct proc * p) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_ioctl(i_dev, cmd, arg, mode, p); @@ -377,8 +359,6 @@ midiioctl(dev_t i_dev, u_long cmd, caddr_t arg, int mode, struct proc * p) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -387,8 +367,6 @@ midipoll(dev_t i_dev, int events, struct proc * p) { int ret; - MIDI_DROP_GIANT_NOSWITCH(); - switch (MIDIDEV(i_dev)) { case MIDI_DEV_MIDIN: ret = midi_poll(i_dev, events, p); @@ -398,8 +376,6 @@ midipoll(dev_t i_dev, int events, struct proc * p) break; } - MIDI_PICKUP_GIANT(); - return (ret); } @@ -503,9 +479,6 @@ midi_read(dev_t i_dev, struct uio * buf, int flag) { int dev, unit, len, ret; mididev_info *d ; -#if defined(MIDI_OUTOFGIANT) - char *buf2; /* XXX Until uiomove(9) becomes MP-safe. */ -#endif /* MIDI_OUTOFGIANT */ dev = minor(i_dev); @@ -517,14 +490,6 @@ midi_read(dev_t i_dev, struct uio * buf, int flag) ret = 0; -#if defined(MIDI_OUTOFGIANT) - mtx_lock(&Giant); - buf2 = malloc(buf->uio_resid, M_DEVBUF, M_WAITOK); - mtx_unlock(&Giant); - if (buf2 == NULL) - return (ENOMEM); -#endif /* MIDI_OUTOFGIANT */ - mtx_lock(&d->flagqueue_mtx); /* Begin recording. */ @@ -536,15 +501,8 @@ midi_read(dev_t i_dev, struct uio * buf, int flag) if ((d->flags & MIDI_F_NBIO) != 0 && d->midi_dbuf_in.rl == 0) ret = EAGAIN; else { -#if defined(MIDI_OUTOFGIANT) - len = buf->uio_resid; - if ((d->flags & MIDI_F_NBIO) != 0 && len > d->midi_dbuf_in.rl) - len = d->midi_dbuf_in.rl; - ret = midibuf_seqread(&d->midi_dbuf_in, buf2, len, &d->flagqueue_mtx); -#else len = buf->uio_resid; ret = midibuf_uioread(&d->midi_dbuf_in, buf, len, &d->flagqueue_mtx); -#endif /* MIDI_OUTOFGIANT */ if (ret < 0) ret = -ret; else @@ -553,14 +511,6 @@ midi_read(dev_t i_dev, struct uio * buf, int flag) mtx_unlock(&d->flagqueue_mtx); -#if defined(MIDI_OUTOFGIANT) - mtx_lock(&Giant); - if (ret == 0) - uiomove((caddr_t)buf2, len, buf); - free(buf2, M_DEVBUF); - mtx_unlock(&Giant); -#endif /* MIDI_OUTOFGIANT */ - return (ret); } @@ -569,10 +519,6 @@ midi_write(dev_t i_dev, struct uio * buf, int flag) { int dev, unit, len, ret; mididev_info *d; -#if defined(MIDI_OUTOFGIANT) - char *buf2, *p; /* XXX Until uiomove(9) becomes MP-safe. */ - int resid; -#endif /* MIDI_OUTOFGIANT */ dev = minor(i_dev); d = get_mididev_info(i_dev, &unit); @@ -584,22 +530,6 @@ midi_write(dev_t i_dev, struct uio * buf, int flag) ret = 0; -#if defined(MIDI_OUTOFGIANT) - resid = buf->uio_resid; - mtx_lock(&d->flagqueue_mtx); - if (resid > d->midi_dbuf_out.fl && - (d->flags & MIDI_F_NBIO)) - resid = d->midi_dbuf_out.fl; - mtx_unlock(&d->flagqueue_mtx); - mtx_lock(&Giant); - buf2 = p = malloc(resid, M_DEVBUF, M_WAITOK); - if (buf2 == NULL) { - mtx_unlock(&Giant); - return (ENOMEM); - } - ret = uiomove((caddr_t)buf2, resid, buf); -#endif /* MIDI_OUTOFGIANT */ - mtx_lock(&d->flagqueue_mtx); /* Have we got the data to write? */ @@ -608,19 +538,11 @@ midi_write(dev_t i_dev, struct uio * buf, int flag) d->callback(d, MIDI_CB_START | MIDI_CB_WR); ret = EAGAIN; } else { -#if defined(MIDI_OUTOFGIANT) - len = resid - (p - buf2); -#else len = buf->uio_resid; -#endif /* MIDI_OUTOFGIANT */ if (len > d->midi_dbuf_out.fl && (d->flags & MIDI_F_NBIO)) len = d->midi_dbuf_out.fl; -#if defined(MIDI_OUTOFGIANT) - ret = midibuf_seqwrite(&d->midi_dbuf_out, p, len, &d->flagqueue_mtx); -#else ret = midibuf_uiowrite(&d->midi_dbuf_out, buf, len, &d->flagqueue_mtx); -#endif /* MIDI_OUTOFGIANT */ if (ret < 0) ret = -ret; else { @@ -632,12 +554,6 @@ midi_write(dev_t i_dev, struct uio * buf, int flag) mtx_unlock(&d->flagqueue_mtx); -#if defined(MIDI_OUTOFGIANT) - mtx_lock(&Giant); - free(buf2, M_DEVBUF); - mtx_unlock(&Giant); -#endif /* MIDI_OUTOFGIANT */ - return (ret); } |