static void ptinit(void) { cam_status status; /* * Create our extend array for storing the devices we attach to. */ ptperiphs = cam_extend_new(); if (ptperiphs == NULL) { kprintf("pt: Failed to alloc extend array!\n"); return; } /* * Install a global async callback. This callback will * receive async callbacks like "new device found". */ status = xpt_register_async(AC_FOUND_DEVICE, ptasync, NULL, NULL); if (status != CAM_REQ_CMP) { kprintf("pt: Failed to attach master async callback " "due to status 0x%x!\n", status); } }
static void ptinit(void) { cam_status status; struct cam_path *path; /* * Create our extend array for storing the devices we attach to. */ ptperiphs = cam_extend_new(); if (ptperiphs == NULL) { printf("pt: Failed to alloc extend array!\n"); return; } /* * Install a global async callback. This callback will * receive async callbacks like "new device found". */ status = xpt_create_path(&path, /*periph*/NULL, CAM_XPT_PATH_ID, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); if (status == CAM_REQ_CMP) { struct ccb_setasync csa; xpt_setup_ccb(&csa.ccb_h, path, /*priority*/5); csa.ccb_h.func_code = XPT_SASYNC_CB; csa.event_enable = AC_FOUND_DEVICE; csa.callback = ptasync; csa.callback_arg = NULL; xpt_action((union ccb *)&csa); status = csa.ccb_h.status; xpt_free_path(path); } if (status != CAM_REQ_CMP) { printf("pt: Failed to attach master async callback " "due to status 0x%x!\n", status); } }