Here is the code for a scsi removable media drive. If this is to become a
module, the cam/scsi attachment must be removed. I have tried calling
cam_sim_free() and xpt_bus_deregister() but when the module is reloaded, the
cam system assigns the next higher minor device number, and then crashes
when accessed. Any ideas here how to reset cam to a state where it knows
nothing about the device?
/*
** Now tell the generic SCSI layer
** about our bus.
*/
devq = cam_simq_alloc(/*maxopenings*/1);
/* XXX What about low-level detach on error? */
if (devq == NULL)
return (ENXIO);
vpo->sim = cam_sim_alloc(vpo_action, vpo_poll, "vpo", vpo,
device_get_unit(dev),
/*untagged*/1, /*tagged*/0, devq);
if (vpo->sim == NULL) {
cam_simq_free(devq);
return (ENXIO);
}
if (xpt_bus_register(vpo->sim, /*bus*/0) != CAM_SUCCESS) {
cam_sim_free(vpo->sim, /*free_devq*/TRUE);
return (ENXIO);
}
/* all went ok */
vpo_cam_rescan(vpo); /* have CAM rescan the bus */
return (0);
Jonathon
--
Microsoft complaining about the source license used by
Linux is like the event horizon calling the kettle black.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message