diff options
author | davidxu <davidxu@FreeBSD.org> | 2003-01-10 09:54:51 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2003-01-10 09:54:51 +0000 |
commit | 87fb929397863eb428aa697122b09f916b7795e2 (patch) | |
tree | c09c1fca5cdf7ff7213e8f22a5cb57b2904f8e48 /sys/kern/subr_bus.c | |
parent | 8072add6cd64deb4e077636a4cbad94573f11b6e (diff) | |
download | FreeBSD-src-87fb929397863eb428aa697122b09f916b7795e2.zip FreeBSD-src-87fb929397863eb428aa697122b09f916b7795e2.tar.gz |
Don't record thread pointer, it's not permanent in process life cycle,
use process pointer instead.
Diffstat (limited to 'sys/kern/subr_bus.c')
-rw-r--r-- | sys/kern/subr_bus.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index 7444a00..0732e3b 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -248,7 +248,7 @@ struct dev_softc struct cv cv; struct selinfo sel; struct devq devq; - d_thread_t *async_td; + struct proc *async_proc; } devsoftc; dev_t devctl_dev; @@ -271,7 +271,7 @@ devopen(dev_t dev, int oflags, int devtype, d_thread_t *td) /* move to init */ devsoftc.inuse = 1; devsoftc.nonblock = 0; - devsoftc.async_td = NULL; + devsoftc.async_proc = NULL; return (0); } @@ -337,9 +337,9 @@ devioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, d_thread_t *td) return (0); case FIOASYNC: if (*(int*)data) - devsoftc.async_td = td; + devsoftc.async_proc = td->td_proc; else - devsoftc.async_td = NULL; + devsoftc.async_proc = NULL; return (0); /* (un)Support for other fcntl() calls. */ @@ -428,8 +428,8 @@ devaddq(const char *type, const char *what, device_t dev) cv_broadcast(&devsoftc.cv); mtx_unlock(&devsoftc.mtx); selwakeup(&devsoftc.sel); - if (devsoftc.async_td) - psignal(devsoftc.async_td->td_proc, SIGIO); + if (devsoftc.async_proc) + psignal(devsoftc.async_proc, SIGIO); return; bad:; free(data, M_BUS); |