Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/virtio/scsi/virtio_scsi.c
Show First 20 Lines • Show All 694 Lines • ▼ Show 20 Lines | vtscsi_cam_async(void *cb_arg, uint32_t code, struct cam_path *path, void *arg) | ||||
} | } | ||||
} | } | ||||
static int | static int | ||||
vtscsi_register_async(struct vtscsi_softc *sc) | vtscsi_register_async(struct vtscsi_softc *sc) | ||||
{ | { | ||||
struct ccb_setasync csa; | struct ccb_setasync csa; | ||||
memset(&csa, 0, sizeof(csa)); | xpt_setup_stack_ccb(&csa.ccb_h, sizeof(csa), sc->vtscsi_path, 5); | ||||
xpt_setup_ccb(&csa.ccb_h, sc->vtscsi_path, 5); | |||||
csa.ccb_h.func_code = XPT_SASYNC_CB; | csa.ccb_h.func_code = XPT_SASYNC_CB; | ||||
csa.event_enable = AC_LOST_DEVICE | AC_FOUND_DEVICE; | csa.event_enable = AC_LOST_DEVICE | AC_FOUND_DEVICE; | ||||
csa.callback = vtscsi_cam_async; | csa.callback = vtscsi_cam_async; | ||||
csa.callback_arg = sc->vtscsi_sim; | csa.callback_arg = sc->vtscsi_sim; | ||||
xpt_action((union ccb *) &csa); | xpt_action((union ccb *) &csa); | ||||
return (csa.ccb_h.status); | return (csa.ccb_h.status); | ||||
} | } | ||||
static void | static void | ||||
vtscsi_deregister_async(struct vtscsi_softc *sc) | vtscsi_deregister_async(struct vtscsi_softc *sc) | ||||
{ | { | ||||
struct ccb_setasync csa; | struct ccb_setasync csa; | ||||
memset(&csa, 0, sizeof(csa)); | xpt_setup_stack_ccb(&csa.ccb_h, sizeof(csa), sc->vtscsi_path, 5); | ||||
xpt_setup_ccb(&csa.ccb_h, sc->vtscsi_path, 5); | |||||
csa.ccb_h.func_code = XPT_SASYNC_CB; | csa.ccb_h.func_code = XPT_SASYNC_CB; | ||||
csa.event_enable = 0; | csa.event_enable = 0; | ||||
csa.callback = vtscsi_cam_async; | csa.callback = vtscsi_cam_async; | ||||
csa.callback_arg = sc->vtscsi_sim; | csa.callback_arg = sc->vtscsi_sim; | ||||
xpt_action((union ccb *) &csa); | xpt_action((union ccb *) &csa); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,644 Lines • Show Last 20 Lines |