Extended sg-API by sg_shutdown(), sg_dispose_drive(), sg_id_string()
This commit is contained in:
parent
0320b7bf2a
commit
d53c5db98e
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2009.12.27.102342"
|
#define Cdrskin_timestamP "2009.12.27.144620"
|
||||||
|
@ -90,6 +90,7 @@ void burn_drive_free_subs(struct burn_drive *d)
|
|||||||
if (d->stdio_fd >= 0)
|
if (d->stdio_fd >= 0)
|
||||||
close (d->stdio_fd);
|
close (d->stdio_fd);
|
||||||
d->stdio_fd = -1;
|
d->stdio_fd = -1;
|
||||||
|
sg_dispose_drive(d, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,9 +60,9 @@ int burn_sg_open_o_nonblock = 1;
|
|||||||
int burn_sg_open_abort_busy = 0;
|
int burn_sg_open_abort_busy = 0;
|
||||||
|
|
||||||
|
|
||||||
/* The message returned from sg_initialize()
|
/* The message returned from sg_id_string() and/or sg_initialize()
|
||||||
*/
|
*/
|
||||||
char sg_initialize_msg[1024] = {""};
|
static char sg_initialize_msg[1024] = {""};
|
||||||
|
|
||||||
|
|
||||||
/* ts A61002 */
|
/* ts A61002 */
|
||||||
@ -151,13 +151,18 @@ void burn_finish(void)
|
|||||||
/* ts A60924 : ticket 74 */
|
/* ts A60924 : ticket 74 */
|
||||||
libdax_msgs_destroy(&libdax_messenger,0);
|
libdax_msgs_destroy(&libdax_messenger,0);
|
||||||
|
|
||||||
|
sg_shutdown(0);
|
||||||
|
|
||||||
burn_running = 0;
|
burn_running = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ts A9122 */
|
|
||||||
|
/* ts A91226 */
|
||||||
/** API function. See libburn.h */
|
/** API function. See libburn.h */
|
||||||
char *burn_scsi_transport_id(int flag)
|
char *burn_scsi_transport_id(int flag)
|
||||||
{
|
{
|
||||||
|
if (!burn_running)
|
||||||
|
sg_id_string(sg_initialize_msg, 0);
|
||||||
return sg_initialize_msg;
|
return sg_initialize_msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
/* os-dummy.h
|
/* os-libcdio.h
|
||||||
Operating system specific libburn definitions and declarations. Included
|
Operating system specific libburn definitions and declarations. Included
|
||||||
by os.h in case of compilation for
|
by os.h in case of compilation for
|
||||||
Unknown POSIX like systems
|
Unknown X/Open-like systems
|
||||||
with GNU libcdio MMC transport adapter sg-libcdio.c
|
with GNU libcdio MMC transport adapter sg-libcdio.c
|
||||||
|
|
||||||
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
|
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPL
|
||||||
@ -40,6 +40,10 @@ SIGKILL, SIGCHLD, SIGSTOP
|
|||||||
/* The maximum size for a (SCSI) i/o transaction */
|
/* The maximum size for a (SCSI) i/o transaction */
|
||||||
/* Important : MUST be at least 32768 ! */
|
/* Important : MUST be at least 32768 ! */
|
||||||
/* (It might be risky to use 64k. FreeBSD is said to can only 32k.) */
|
/* (It might be risky to use 64k. FreeBSD is said to can only 32k.) */
|
||||||
|
/* On Linux kernel 2.6.18 when stream recording 2x BD-RE
|
||||||
|
this would bring about 10 % more speed:
|
||||||
|
BURN_OS_TRANSPORT_BUFFER_SIZE 65536
|
||||||
|
*/
|
||||||
#define BURN_OS_TRANSPORT_BUFFER_SIZE 32768
|
#define BURN_OS_TRANSPORT_BUFFER_SIZE 32768
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,6 +39,22 @@ Present implementation: default dummy which enables libburn only to work
|
|||||||
extern struct libdax_msgs *libdax_messenger;
|
extern struct libdax_msgs *libdax_messenger;
|
||||||
|
|
||||||
|
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag)
|
||||||
|
{
|
||||||
|
strcpy(msg, "internal X/Open adapter sg-dummy");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility supporting
|
needed operating system facilities. Checks for compatibility supporting
|
||||||
software components.
|
software components.
|
||||||
@ -48,10 +64,34 @@ extern struct libdax_msgs *libdax_messenger;
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag)
|
int sg_initialize(char msg[1024], int flag)
|
||||||
{
|
{
|
||||||
strcpy(msg, "internal X/Open adapter sg-dummy");
|
return sg_id_string(msg, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Returns the next index number and the next enumerated drive address.
|
/** Returns the next index number and the next enumerated drive address.
|
||||||
The enumeration has to cover all available and accessible drives. It is
|
The enumeration has to cover all available and accessible drives. It is
|
||||||
allowed to return addresses of drives which are not available but under
|
allowed to return addresses of drives which are not available but under
|
||||||
|
@ -29,17 +29,28 @@ and of deriving the following system specific files from existing examples:
|
|||||||
Said sg-*.c operations are defined by a public function interface, which has
|
Said sg-*.c operations are defined by a public function interface, which has
|
||||||
to be implemented in a way that provides libburn with the desired services:
|
to be implemented in a way that provides libburn with the desired services:
|
||||||
|
|
||||||
|
sg_id_string() returns an id string of the SCSI transport adapter.
|
||||||
|
It may be called before initialization but then may
|
||||||
|
return only a preliminary id.
|
||||||
|
|
||||||
sg_initialize() performs global initialization of the SCSI transport
|
sg_initialize() performs global initialization of the SCSI transport
|
||||||
adapter and eventually needed operating system
|
adapter and eventually needed operating system
|
||||||
facilities. Checks for compatibility of supporting
|
facilities. Checks for compatibility of supporting
|
||||||
software components.
|
software components.
|
||||||
|
|
||||||
|
sg_shutdown() performs global finalizations and releases golbally
|
||||||
|
aquired resources.
|
||||||
|
|
||||||
sg_give_next_adr() iterates over the set of potentially useful drive
|
sg_give_next_adr() iterates over the set of potentially useful drive
|
||||||
address strings.
|
address strings.
|
||||||
|
|
||||||
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
||||||
accessible drives into libburn's list of drives.
|
accessible drives into libburn's list of drives.
|
||||||
|
|
||||||
|
sg_dispose_drive() finalizes adapter specifics of struct burn_drive
|
||||||
|
on destruction. Releases resources which were aquired
|
||||||
|
underneath scsi_enumerate_drives().
|
||||||
|
|
||||||
sg_drive_is_open() tells wether libburn has the given drive in use.
|
sg_drive_is_open() tells wether libburn has the given drive in use.
|
||||||
|
|
||||||
sg_grab() opens the drive for SCSI commands and ensures
|
sg_grab() opens the drive for SCSI commands and ensures
|
||||||
@ -235,6 +246,22 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
|
|||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag)
|
||||||
|
{
|
||||||
|
strcpy(msg, "internal FreeBSD CAM adapter sg-freebsd-port");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility supporting
|
needed operating system facilities. Checks for compatibility supporting
|
||||||
software components.
|
software components.
|
||||||
@ -244,11 +271,36 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag)
|
int sg_initialize(char msg[1024], int flag)
|
||||||
{
|
{
|
||||||
strcpy(msg, "internal FreeBSD CAM adapter sg-freebsd-port");
|
return sg_id_string(msg, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
The eventual initialization of those components was made underneath
|
||||||
|
scsi_enumerate_drives().
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Returns the next index number and the next enumerated drive address.
|
/** Returns the next index number and the next enumerated drive address.
|
||||||
The enumeration has to cover all available and accessible drives. It is
|
The enumeration has to cover all available and accessible drives. It is
|
||||||
allowed to return addresses of drives which are not available but under
|
allowed to return addresses of drives which are not available but under
|
||||||
|
@ -54,7 +54,24 @@ int burn_drive_is_banned(char *device_address);
|
|||||||
int mmc_function_spy(struct burn_drive *d, char * text);
|
int mmc_function_spy(struct burn_drive *d, char * text);
|
||||||
|
|
||||||
|
|
||||||
/* ts A91225 */
|
/* ts A91227 */
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag)
|
||||||
|
{
|
||||||
|
strcpy(msg, "internal FreeBSD CAM adapter sg-freebsd");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ts A91227 */
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility supporting
|
needed operating system facilities. Checks for compatibility supporting
|
||||||
software components.
|
software components.
|
||||||
@ -64,11 +81,37 @@ int mmc_function_spy(struct burn_drive *d, char * text);
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag)
|
int sg_initialize(char msg[1024], int flag)
|
||||||
{
|
{
|
||||||
strcpy(msg, "internal FreeBSD CAM adapter sg-freebsd");
|
return sg_id_string(msg, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ts A91227 */
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
The eventual initialization of those components was made underneath
|
||||||
|
scsi_enumerate_drives().
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ts A61021 : Moved most code from scsi_enumerate_drives under
|
/* ts A61021 : Moved most code from scsi_enumerate_drives under
|
||||||
sg_give_next_adr() */
|
sg_give_next_adr() */
|
||||||
/* Some helper functions for scsi_give_next_adr() */
|
/* Some helper functions for scsi_give_next_adr() */
|
||||||
|
@ -29,17 +29,28 @@ and of deriving the following system specific files from existing examples:
|
|||||||
Said sg-*.c operations are defined by a public function interface, which has
|
Said sg-*.c operations are defined by a public function interface, which has
|
||||||
to be implemented in a way that provides libburn with the desired services:
|
to be implemented in a way that provides libburn with the desired services:
|
||||||
|
|
||||||
|
sg_id_string() returns an id string of the SCSI transport adapter.
|
||||||
|
It may be called before initialization but then may
|
||||||
|
return only a preliminary id.
|
||||||
|
|
||||||
sg_initialize() performs global initialization of the SCSI transport
|
sg_initialize() performs global initialization of the SCSI transport
|
||||||
adapter and eventually needed operating system
|
adapter and eventually needed operating system
|
||||||
facilities. Checks for compatibility of supporting
|
facilities. Checks for compatibility of supporting
|
||||||
software components.
|
software components.
|
||||||
|
|
||||||
|
sg_shutdown() performs global finalizations and releases golbally
|
||||||
|
aquired resources.
|
||||||
|
|
||||||
sg_give_next_adr() iterates over the set of potentially useful drive
|
sg_give_next_adr() iterates over the set of potentially useful drive
|
||||||
address strings.
|
address strings.
|
||||||
|
|
||||||
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
||||||
accessible drives into libburn's list of drives.
|
accessible drives into libburn's list of drives.
|
||||||
|
|
||||||
|
sg_dispose_drive() finalizes adapter specifics of struct burn_drive
|
||||||
|
on destruction. Releases resources which were aquired
|
||||||
|
underneath scsi_enumerate_drives().
|
||||||
|
|
||||||
sg_drive_is_open() tells wether libburn has the given drive in use.
|
sg_drive_is_open() tells wether libburn has the given drive in use.
|
||||||
|
|
||||||
sg_grab() opens the drive for SCSI commands and ensures
|
sg_grab() opens the drive for SCSI commands and ensures
|
||||||
@ -281,6 +292,35 @@ static void enumerate_common(char *fname, char *cdio_name,
|
|||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag)
|
||||||
|
{
|
||||||
|
char *version_text;
|
||||||
|
|
||||||
|
sprintf(msg, "sg-libcdio h%d with libcdio ", LIBCDIO_VERSION_NUM);
|
||||||
|
|
||||||
|
#if LIBCDIO_VERSION_NUM < 83
|
||||||
|
|
||||||
|
LIBBURN_MISCONFIGURATION = 0;
|
||||||
|
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_cdio_version_dot_h_TOO_OLD__NEED_libcdio_VERSION_NUM_83 = 0;
|
||||||
|
LIBBURN_MISCONFIGURATION_ = 0;
|
||||||
|
|
||||||
|
#endif /* LIBCDIO_VERSION_NUM < 83 */
|
||||||
|
|
||||||
|
version_text = (char *) cdio_version_string;
|
||||||
|
strncat(msg, version_text, 800);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility of supporting
|
needed operating system facilities. Checks for compatibility of supporting
|
||||||
software components.
|
software components.
|
||||||
@ -290,26 +330,12 @@ static void enumerate_common(char *fname, char *cdio_name,
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag)
|
int sg_initialize(char msg[1024], int flag)
|
||||||
{
|
{
|
||||||
char *version_text, *msg_pt;
|
|
||||||
int cdio_ver;
|
int cdio_ver;
|
||||||
|
char *msg_pt;
|
||||||
|
|
||||||
sprintf(msg, "sg-libcdio adapter v%d with libcdio version ",
|
msg[0] = 0;
|
||||||
LIBCDIO_VERSION_NUM);
|
sg_id_string(msg, 0);
|
||||||
|
|
||||||
#if LIBCDIO_VERSION_NUM < 83
|
|
||||||
|
|
||||||
LIBBURN_MISCONFIGURATION = 0;
|
|
||||||
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_cdio_version_dot_h_TOO_OLD__NEED_LIBCDIO_VERSION_NUM_83 = 0;
|
|
||||||
LIBBURN_MISCONFIGURATION_ = 0;
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
cdio_ver = libcdio_version_num;
|
cdio_ver = libcdio_version_num;
|
||||||
version_text = (char *) cdio_version_string;
|
|
||||||
|
|
||||||
#endif /* ! LIBCDIO_VERSION_NUM < 83 */
|
|
||||||
|
|
||||||
strncat(msg, version_text, 800);
|
|
||||||
libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
|
libdax_msgs_submit(libdax_messenger, -1, 0x00000002,
|
||||||
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
|
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
|
||||||
msg , 0, 0);
|
msg , 0, 0);
|
||||||
@ -329,6 +355,32 @@ LIBBURN_MISCONFIGURATION_ = 0;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
The eventual initialization of those components was made underneath
|
||||||
|
scsi_enumerate_drives().
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Returns the next index number and the next enumerated drive address.
|
/** Returns the next index number and the next enumerated drive address.
|
||||||
The enumeration has to cover all available and accessible drives. It is
|
The enumeration has to cover all available and accessible drives. It is
|
||||||
allowed to return addresses of drives which are not available but under
|
allowed to return addresses of drives which are not available but under
|
||||||
|
@ -35,17 +35,28 @@ and of deriving the following system specific files from existing examples:
|
|||||||
Said sg-*.c operations are defined by a public function interface, which has
|
Said sg-*.c operations are defined by a public function interface, which has
|
||||||
to be implemented in a way that provides libburn with the desired services:
|
to be implemented in a way that provides libburn with the desired services:
|
||||||
|
|
||||||
|
sg_id_string() returns an id string of the SCSI transport adapter.
|
||||||
|
It may be called before initialization but then may
|
||||||
|
return only a preliminary id.
|
||||||
|
|
||||||
sg_initialize() performs global initialization of the SCSI transport
|
sg_initialize() performs global initialization of the SCSI transport
|
||||||
adapter and eventually needed operating system
|
adapter and eventually needed operating system
|
||||||
facilities. Checks for compatibility of supporting
|
facilities. Checks for compatibility of supporting
|
||||||
software components.
|
software components.
|
||||||
|
|
||||||
|
sg_shutdown() performs global finalizations and releases golbally
|
||||||
|
aquired resources.
|
||||||
|
|
||||||
sg_give_next_adr() iterates over the set of potentially useful drive
|
sg_give_next_adr() iterates over the set of potentially useful drive
|
||||||
address strings.
|
address strings.
|
||||||
|
|
||||||
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
scsi_enumerate_drives() brings all available, not-whitelist-banned, and
|
||||||
accessible drives into libburn's list of drives.
|
accessible drives into libburn's list of drives.
|
||||||
|
|
||||||
|
sg_dispose_drive() finalizes adapter specifics of struct burn_drive
|
||||||
|
on destruction. Releases resources which were aquired
|
||||||
|
underneath scsi_enumerate_drives().
|
||||||
|
|
||||||
sg_drive_is_open() tells wether libburn has the given drive in use.
|
sg_drive_is_open() tells wether libburn has the given drive in use.
|
||||||
|
|
||||||
sg_grab() opens the drive for SCSI commands and ensures
|
sg_grab() opens the drive for SCSI commands and ensures
|
||||||
@ -1412,6 +1423,22 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
|
|||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag)
|
||||||
|
{
|
||||||
|
strcpy(msg, "internal Linux SG_IO adapter sg-linux");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility supporting
|
needed operating system facilities. Checks for compatibility supporting
|
||||||
software components.
|
software components.
|
||||||
@ -1421,11 +1448,36 @@ static void enumerate_common(char *fname, int bus_no, int host_no,
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag)
|
int sg_initialize(char msg[1024], int flag)
|
||||||
{
|
{
|
||||||
strcpy(msg, "internal Linux SG_IO adapter sg-linux");
|
return sg_id_string(msg, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
The eventual initialization of those components was made underneath
|
||||||
|
scsi_enumerate_drives().
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** PORTING:
|
/** PORTING:
|
||||||
In this Linux implementation, this function mirrors the enumeration
|
In this Linux implementation, this function mirrors the enumeration
|
||||||
done in sg_enumerate and ata_enumerate(). It would be better to base those
|
done in sg_enumerate and ata_enumerate(). It would be better to base those
|
||||||
|
32
libburn/sg.h
32
libburn/sg.h
@ -33,6 +33,18 @@ int sg_drive_is_open(struct burn_drive * d);
|
|||||||
|
|
||||||
int burn_os_stdio_capacity(char *path, off_t *bytes);
|
int burn_os_stdio_capacity(char *path, off_t *bytes);
|
||||||
|
|
||||||
|
/* ts A91227 */
|
||||||
|
/** Returns the id string of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities.
|
||||||
|
This call is usable even if sg_initialize() was not called yet. In that
|
||||||
|
case a preliminary constant message might be issued if detailed info is
|
||||||
|
not available yet.
|
||||||
|
@param msg returns id string
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_id_string(char msg[1024], int flag);
|
||||||
|
|
||||||
/* ts A91225 */
|
/* ts A91225 */
|
||||||
/** Performs global initialization of the SCSI transport adapter and eventually
|
/** Performs global initialization of the SCSI transport adapter and eventually
|
||||||
needed operating system facilities. Checks for compatibility supporting
|
needed operating system facilities. Checks for compatibility supporting
|
||||||
@ -43,5 +55,25 @@ int burn_os_stdio_capacity(char *path, off_t *bytes);
|
|||||||
*/
|
*/
|
||||||
int sg_initialize(char msg[1024], int flag);
|
int sg_initialize(char msg[1024], int flag);
|
||||||
|
|
||||||
|
/* ts A91227 */
|
||||||
|
/** Performs global finalization of the SCSI transport adapter and eventually
|
||||||
|
needed operating system facilities. Releases globally aquired resources.
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_shutdown(int flag);
|
||||||
|
|
||||||
|
/* ts A91227 */
|
||||||
|
/** Finalizes BURN_OS_TRANSPORT_DRIVE_ELEMENTS, the components of
|
||||||
|
struct burn_drive which are defined in os-*.h.
|
||||||
|
The eventual initialization of those components was made underneath
|
||||||
|
scsi_enumerate_drives().
|
||||||
|
This will be called when a burn_drive gets disposed.
|
||||||
|
@param d the drive to be finalized
|
||||||
|
@param flag unused yet, submit 0
|
||||||
|
@return 1 = success, <=0 = failure
|
||||||
|
*/
|
||||||
|
int sg_dispose_drive(struct burn_drive *d, int flag);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __SG */
|
#endif /* __SG */
|
||||||
|
Loading…
Reference in New Issue
Block a user