diff options
| author | Bruce Evans <bde@FreeBSD.org> | 2001-12-28 18:08:10 +0000 |
|---|---|---|
| committer | Bruce Evans <bde@FreeBSD.org> | 2001-12-28 18:08:10 +0000 |
| commit | fb717773e7f9ae7cc644cc9bb4249f9d7469c2cf (patch) | |
| tree | 03b32fd6acbd0f7c12f41bf4e0cfccfc4af66a05 /sys/dev/sio/sio.c | |
| parent | be5fa99a1eca333f2be74e807be22b92b3ef1823 (diff) | |
Notes
Diffstat (limited to 'sys/dev/sio/sio.c')
| -rw-r--r-- | sys/dev/sio/sio.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c index 5133064ee9a0..76eade668ccd 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/sio.c @@ -3092,6 +3092,7 @@ siocnputc(dev, c) dev_t dev; int c; { + int need_unlock; int s; struct siocnstate sp; Port_t iobase; @@ -3101,13 +3102,16 @@ siocnputc(dev, c) else iobase = siocniobase; s = spltty(); - if (sio_inited) + need_unlock = 0; + if (sio_inited == 2 && !mtx_owned(&sio_lock)) { mtx_lock_spin(&sio_lock); + need_unlock = 1; + } siocnopen(&sp, iobase, comdefaultrate); siocntxwait(iobase); outb(iobase + com_data, c); siocnclose(&sp, iobase); - if (sio_inited) + if (need_unlock) mtx_unlock_spin(&sio_lock); splx(s); } |
