Use solaris ioctl for blocksize set/get. Prototype corrections.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: mmc.h,v 1.6 2005/02/10 01:59:06 rocky Exp $
|
||||
$Id: mmc.h,v 1.7 2005/02/10 11:23:08 rocky Exp $
|
||||
|
||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||
|
||||
@@ -388,8 +388,8 @@ const char *mmc_feature_profile2str( int i_feature_profile );
|
||||
uint8_t mmc_get_cmd_len(uint8_t scsi_cmd);
|
||||
|
||||
/*!
|
||||
Set the block size for subsequest read requests, via an MMC
|
||||
MODE_SENSE 6 command.
|
||||
Get the block size used in read requests, via MMC.
|
||||
@return the blocksize if > 0; error if <= 0
|
||||
*/
|
||||
int mmc_get_blocksize ( CdIo_t *p_cdio );
|
||||
|
||||
@@ -517,10 +517,10 @@ int mmc_run_cmd( const CdIo_t *p_cdio, unsigned int i_timeout_ms,
|
||||
scsi_mmc_direction_t e_direction, unsigned int i_buf,
|
||||
/*in/out*/ void *p_buf );
|
||||
/*!
|
||||
Set the block size for subsequest read requests, via an MMC
|
||||
MODE_SELECT 6 command.
|
||||
Set the block size for subsequest read requests, via MMC.
|
||||
*/
|
||||
int mmc_set_blocksize ( const CdIo_t *p_cdio, unsigned int i_bsize);
|
||||
driver_return_code_t mmc_set_blocksize ( const CdIo_t *p_cdio,
|
||||
unsigned int i_bsize);
|
||||
|
||||
/*!
|
||||
Set the drive speed.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: _cdio_sunos.c,v 1.21 2005/02/07 03:36:02 rocky Exp $
|
||||
$Id: _cdio_sunos.c,v 1.22 2005/02/10 11:23:08 rocky Exp $
|
||||
|
||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#ifdef HAVE_SOLARIS_CDROM
|
||||
|
||||
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.21 2005/02/07 03:36:02 rocky Exp $";
|
||||
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.22 2005/02/10 11:23:08 rocky Exp $";
|
||||
|
||||
#ifdef HAVE_GLOB_H
|
||||
#include <glob.h>
|
||||
@@ -496,6 +496,26 @@ get_arg_solaris (void *p_user_data, const char key[])
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*!
|
||||
Get the block size used in read requests, via ioctl.
|
||||
@return the blocksize if > 0; error if <= 0
|
||||
*/
|
||||
static int
|
||||
get_blocksize_solaris (void *p_user_data) {
|
||||
|
||||
_img_private_t *p_env = p_user_data;
|
||||
int ret;
|
||||
int i_blocksize;
|
||||
|
||||
if ( !p_env || p_env->gen.fd <=0 ) return DRIVER_OP_UNINIT;
|
||||
if ((ret = ioctl(p_env->gen.fd, CDROMGBLKMODE, &i_blocksize)) != 0) {
|
||||
cdio_warn ("CDROMGBLKMODE failed: %s\n", strerror(errno));
|
||||
return DRIVER_OP_ERROR;
|
||||
} else {
|
||||
return i_blocksize;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
Return a string containing the default CD device if none is specified.
|
||||
*/
|
||||
@@ -692,7 +712,7 @@ get_track_format_solaris(void *p_user_data, track_t i_track)
|
||||
FIXME: there's gotta be a better design for this and get_track_format?
|
||||
*/
|
||||
static bool
|
||||
_cdio_get_track_green(void *p_user_data, track_t i_track)
|
||||
get_track_green_solaris(void *p_user_data, track_t i_track)
|
||||
{
|
||||
_img_private_t *p_env = p_user_data;
|
||||
|
||||
@@ -722,7 +742,7 @@ _cdio_get_track_green(void *p_user_data, track_t i_track)
|
||||
False is returned if there is no entry.
|
||||
*/
|
||||
static bool
|
||||
_cdio_get_track_msf(void *p_user_data, track_t i_track, msf_t *msf)
|
||||
get_track_msf_solaris(void *p_user_data, track_t i_track, msf_t *msf)
|
||||
{
|
||||
_img_private_t *p_env = p_user_data;
|
||||
|
||||
@@ -746,6 +766,26 @@ _cdio_get_track_msf(void *p_user_data, track_t i_track, msf_t *msf)
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
Get the block size used in read requests, via ioctl.
|
||||
@return the blocksize if > 0; error if <= 0
|
||||
*/
|
||||
static driver_return_code_t
|
||||
set_blocksize_solaris (void *p_user_data) {
|
||||
|
||||
_img_private_t *p_env = p_user_data;
|
||||
int ret;
|
||||
int i_blocksize;
|
||||
|
||||
if ( !p_env || p_env->gen.fd <=0 ) return DRIVER_OP_UNINIT;
|
||||
if ((ret = ioctl(p_env->gen.fd, CDROMSBLKMODE, i_blocksize)) != 0) {
|
||||
cdio_warn ("CDROMSBLKMODE failed: %s\n", strerror(errno));
|
||||
return DRIVER_OP_ERROR;
|
||||
} else {
|
||||
return DRIVER_OP_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set CD-ROM drive speed */
|
||||
static driver_return_code_t
|
||||
set_speed_solaris (void *p_user_data, int i_speed)
|
||||
@@ -846,7 +886,11 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
|
||||
_funcs.eject_media = eject_media_solaris;
|
||||
_funcs.free = cdio_generic_free;
|
||||
_funcs.get_arg = get_arg_solaris;
|
||||
#if USE_MMC
|
||||
_funcs.get_blocksize = get_blocksize_mmc,
|
||||
#else
|
||||
_funcs.get_blocksize = get_blocksize_solaris,
|
||||
#endif
|
||||
_funcs.get_cdtext = get_cdtext_generic;
|
||||
_funcs.get_default_device = cdio_get_default_device_solaris;
|
||||
_funcs.get_devices = cdio_get_devices_solaris;
|
||||
@@ -861,10 +905,10 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
|
||||
_funcs.get_track_channels = get_track_channels_generic,
|
||||
_funcs.get_track_copy_permit = get_track_copy_permit_generic,
|
||||
_funcs.get_track_format = get_track_format_solaris;
|
||||
_funcs.get_track_green = _cdio_get_track_green;
|
||||
_funcs.get_track_green = get_track_green_solaris;
|
||||
_funcs.get_track_lba = NULL; /* This could be done if need be. */
|
||||
_funcs.get_track_preemphasis = get_track_preemphasis_generic,
|
||||
_funcs.get_track_msf = _cdio_get_track_msf;
|
||||
_funcs.get_track_msf = get_track_msf_solaris;
|
||||
_funcs.lseek = cdio_generic_lseek;
|
||||
_funcs.read = cdio_generic_read;
|
||||
_funcs.read_audio_sectors = _read_audio_sectors_solaris;
|
||||
@@ -875,7 +919,11 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode)
|
||||
_funcs.read_toc = read_toc_solaris;
|
||||
_funcs.run_mmc_cmd = run_mmc_cmd_solaris;
|
||||
_funcs.set_arg = _set_arg_solaris;
|
||||
#if USE_MMC
|
||||
_funcs.set_blocksize = set_blocksize_mmc;
|
||||
#else
|
||||
_funcs.set_blocksize = set_blocksize_solaris;
|
||||
#endif
|
||||
_funcs.set_speed = set_speed_solaris;
|
||||
|
||||
_data = calloc(1, sizeof (_img_private_t));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Common Multimedia Command (MMC) routines.
|
||||
|
||||
$Id: mmc.c,v 1.8 2005/02/10 03:23:10 rocky Exp $
|
||||
$Id: mmc.c,v 1.9 2005/02/10 11:23:08 rocky Exp $
|
||||
|
||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||
|
||||
@@ -54,8 +54,11 @@
|
||||
corresponding publically-accessible routine.
|
||||
*************************************************************************/
|
||||
|
||||
/* Set read blocksize (via MMC) */
|
||||
driver_return_code_t
|
||||
/*!
|
||||
Get the block size for subsequest read requests, via MMC.
|
||||
@return the blocksize if > 0; error if <= 0
|
||||
*/
|
||||
int
|
||||
get_blocksize_mmc (void *p_user_data)
|
||||
{
|
||||
generic_img_private_t *p_env = p_user_data;
|
||||
|
||||
Reference in New Issue
Block a user