FreeBSD/sys/cam/cam_xpt.c
/*
 * Don't automatically grab the xpt softc lock here even though this is going
 * through the xpt device.  The xpt device is really just a back door for
 * accessing other devices and SIMs, so the right thing to do is to grab
 * the appropriate SIM lock once the bus/SIM is located.
 */
Don't automatically grab the xpt softc lock here even though this is going
through the xpt device.  The xpt device is really just a back door for
accessing other devices and SIMs, so the right thing to do is to grab
the appropriate SIM lock once the bus/SIM is located.
Don ' t automatically grab the xpt softc lock here even though this is going through the xpt device . The xpt device is really just a back door for accessing other devices and SIMs so the right thing to do is to grab the appropriate SIM lock once the bus / SIM is located .
static int
xptioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
{
	int error;
	if ((error = xptdoioctl(dev, cmd, addr, flag, td)) == ENOTTY) {
		error = cam_compat_ioctl(dev, cmd, addr, flag, td, xptdoioctl);
	}
	return (error);
}
static int xptioctl ( struct cdev * dev , u_long cmd , caddr_t addr , int flag , struct thread * td ) { int error ; if ( ( error = xptdoioctl ( dev , cmd , addr , flag , td ) ) == ENOTTY ) { error = cam_compat_ioctl ( dev , cmd , addr , flag , td , xptdoioctl ) ; } return ( error ) ; }
Don't automatically grab the xpt softc lock here even though this is going
 through the xpt device.
Don ' t automatically grab the xpt softc lock here even though this is going through the xpt device .