summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/midi/midi.c
diff options
context:
space:
mode:
authortanimura <tanimura@FreeBSD.org>2001-03-14 07:29:47 +0000
committertanimura <tanimura@FreeBSD.org>2001-03-14 07:29:47 +0000
commita6f258c4f0f90ea76335ae4af593f7482df5d7a4 (patch)
tree3e02aa536e35d86a0eb73fb532b481b978cfd764 /sys/dev/sound/midi/midi.c
parentbe9d069cf0df15e40cb07b595afbe56b5359b408 (diff)
downloadFreeBSD-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.c84
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);
}
OpenPOWER on IntegriCloud