/* A wrapper around the ioctl() workhorse to make reference counting easy. */ int wskbd_do_ioctl(struct device *dv, u_long cmd, caddr_t data, int flag, struct proc *p) { struct wskbd_softc *sc = (struct wskbd_softc *)dv; int error; sc->sc_refcnt++; error = wskbd_do_ioctl_sc(sc, cmd, data, flag, p); if (--sc->sc_refcnt < 0) wakeup(sc); return (error); }
/* A wrapper around the ioctl() workhorse to make reference counting easy. */ int wskbd_do_ioctl(device_t dv, u_long cmd, void *data, int flag, struct lwp *l) { struct wskbd_softc *sc = device_private(dv); int error; sc->sc_refcnt++; error = wskbd_do_ioctl_sc(sc, cmd, data, flag, l); if (--sc->sc_refcnt < 0) wakeup(sc); return (error); }