Index: lpt.c =================================================================== --- lpt.c (版本 184151) +++ lpt.c (工作副本) @@ -399,7 +399,7 @@ sc->cdev_bypass = make_dev(&lpt_cdevsw, unit, UID_ROOT, GID_WHEEL, 0600, LPT_NAME "%d.ctl", unit); sc->cdev_bypass->si_drv1 = sc; - sc->cdev_bypass->si_drv2 = LP_BYPASS; + sc->cdev_bypass->si_drv2 = (void *)(intptr_t)LP_BYPASS; return (0); } @@ -476,7 +476,7 @@ } else sc->sc_state |= LPTINIT; - sc->sc_flags = dev->si_drv2; + sc->sc_flags = (char)(intptr_t)dev->si_drv2; /* Check for open with BYPASS flag set. */ if (sc->sc_flags & LP_BYPASS) { Index: ppi.c =================================================================== --- ppi.c (版本 184151) +++ ppi.c (工作副本) @@ -171,7 +171,7 @@ UID_ROOT, GID_WHEEL, 0600, "ppi%d", device_get_unit(dev)); if (ppi->ppi_cdev == NULL) { - device_printf("Failed to create character device\n"); + device_printf(dev, "Failed to create character device\n"); return (ENXIO); } ppi->ppi_cdev->si_drv1 = ppi; @@ -496,6 +496,7 @@ { struct ppi_data *ppi = dev->si_drv1; device_t ppidev = ppi->ppi_device; + device_t ppbus = device_get_parent(ppidev); int error = 0; u_int8_t *val = (u_int8_t *)data;