|
|
| version 1.14, 2004/05/13 23:49:21 | version 1.15, 2004/05/19 22:52:51 |
|---|---|
| Line 182 ucom_attach(struct ucom_softc *sc) | Line 182 ucom_attach(struct ucom_softc *sc) |
| { | { |
| struct tty *tp; | struct tty *tp; |
| int unit; | int unit; |
| dev_t dev; | |
| unit = device_get_unit(sc->sc_dev); | unit = device_get_unit(sc->sc_dev); |
| Line 194 ucom_attach(struct ucom_softc *sc) | Line 195 ucom_attach(struct ucom_softc *sc) |
| DPRINTF(("ucom_attach: make_dev: ucom%d\n", unit)); | DPRINTF(("ucom_attach: make_dev: ucom%d\n", unit)); |
| sc->dev = make_dev(&ucom_cdevsw, unit | UCOM_CALLOUT_MASK, | cdevsw_add(&ucom_cdevsw, UCOMUNIT_MASK, unit); |
| dev = make_dev(&ucom_cdevsw, unit | UCOM_CALLOUT_MASK, | |
| UID_UUCP, GID_DIALER, 0660, | UID_UUCP, GID_DIALER, 0660, |
| "ucom%d", unit); | "ucom%d", unit); |
| sc->dev->si_tty = tp; | dev->si_tty = tp; |
| return (0); | return (0); |
| } | } |
| Line 207 ucom_detach(struct ucom_softc *sc) | Line 209 ucom_detach(struct ucom_softc *sc) |
| { | { |
| struct tty *tp = sc->sc_tty; | struct tty *tp = sc->sc_tty; |
| int s; | int s; |
| int unit; | |
| DPRINTF(("ucom_detach: sc = %p, tp = %p\n", sc, sc->sc_tty)); | DPRINTF(("ucom_detach: sc = %p, tp = %p\n", sc, sc->sc_tty)); |
| Line 239 ucom_detach(struct ucom_softc *sc) | Line 242 ucom_detach(struct ucom_softc *sc) |
| } | } |
| splx(s); | splx(s); |
| destroy_dev(sc->dev); | unit = device_get_unit(sc->sc_dev); |
| cdevsw_remove(&ucom_cdevsw, UCOMUNIT_MASK, unit); | |
| return (0); | return (0); |
| } | } |
| Line 302 ucomopen(dev_t dev, int flag, int mode, | Line 306 ucomopen(dev_t dev, int flag, int mode, |
| sc->sc_poll = 0; | sc->sc_poll = 0; |
| sc->sc_lsr = sc->sc_msr = sc->sc_mcr = 0; | sc->sc_lsr = sc->sc_msr = sc->sc_mcr = 0; |
| tp->t_dev = dev; | tp->t_dev = reference_dev(dev); |
| /* | /* |
| * Initialize the termios status to the defaults. Add in the | * Initialize the termios status to the defaults. Add in the |
| Line 472 ucomclose(dev_t dev, int flag, int mode, | Line 476 ucomclose(dev_t dev, int flag, int mode, |
| DPRINTF(("%s: ucomclose: unit = %d\n", | DPRINTF(("%s: ucomclose: unit = %d\n", |
| USBDEVNAME(sc->sc_dev), UCOMUNIT(dev))); | USBDEVNAME(sc->sc_dev), UCOMUNIT(dev))); |
| if (tp->t_dev) { | |
| release_dev(tp->t_dev); | |
| tp->t_dev = NULL; | |
| } | |
| if (!ISSET(tp->t_state, TS_ISOPEN)) | if (!ISSET(tp->t_state, TS_ISOPEN)) |
| goto quit; | goto quit; |