Start Solaris driver test. Driver MMC sets cdio return codes better.

This commit is contained in:
rocky
2009-12-24 03:52:50 +01:00
parent 16c22fa550
commit d62c732082
5 changed files with 117 additions and 5 deletions

View File

@@ -284,6 +284,7 @@ run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
{
const _img_private_t *p_env = p_user_data;
struct uscsi_cmd cgc;
int i_rc;
memset (&cgc, 0, sizeof (struct uscsi_cmd));
cgc.uscsi_cdb = (caddr_t) p_cdb;
@@ -296,7 +297,29 @@ run_mmc_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
cgc.uscsi_buflen = i_buf;
cgc.uscsi_cdblen = i_cdb;
return ioctl(p_env->gen.fd, USCSICMD, &cgc);
i_rc = ioctl(p_env->gen.fd, USCSICMD, &cgc);
if (0 == i_rc) return DRIVER_OP_SUCCESS;
if (-1 == i_rc) {
cdio_info ("ioctl USCSICMD failed: %s", strerror(errno));
switch (errno) {
case EPERM:
return DRIVER_OP_NOT_PERMITTED;
break;
case EINVAL:
return DRIVER_OP_BAD_PARAMETER;
break;
case EFAULT:
return DRIVER_OP_BAD_POINTER;
break;
case EIO:
default:
return DRIVER_OP_ERROR;
break;
}
return DRIVER_OP_ERROR;
}
/*Not sure if this the best thing, but we'll use anyway. */
return DRIVER_OP_SUCCESS;
}
/*!