Commit 1eee6ab8 authored by Thomas Schmitt's avatar Thomas Schmitt

New system adapter for Solaris uscsi (tested on snv134, kernel 5.11)

parent 736d8b90
...@@ -203,10 +203,12 @@ EXTRA_DIST = \ ...@@ -203,10 +203,12 @@ EXTRA_DIST = \
libburn/os-freebsd.h \ libburn/os-freebsd.h \
libburn/os-linux.h \ libburn/os-linux.h \
libburn/os-libcdio.h \ libburn/os-libcdio.h \
libburn/os-solaris.h \
libburn/sg-dummy.c \ libburn/sg-dummy.c \
libburn/sg-freebsd.c \ libburn/sg-freebsd.c \
libburn/sg-linux.c \ libburn/sg-linux.c \
libburn/sg-libcdio.c \ libburn/sg-libcdio.c \
libburn/sg-solaris.c \
COPYING \ COPYING \
NEWS \ NEWS \
ChangeLog \ ChangeLog \
......
...@@ -105,8 +105,9 @@ The project comprises of several more or less interdependent parts which ...@@ -105,8 +105,9 @@ The project comprises of several more or less interdependent parts which
together strive to be a usable foundation for application development. together strive to be a usable foundation for application development.
These are libraries, language bindings, and middleware binaries which emulate These are libraries, language bindings, and middleware binaries which emulate
classical (and valuable) Linux tools. classical (and valuable) Linux tools.
Currently it is supported on Linux with kernels >= 2.4 and on FreeBSD versions Currently it is supported on GNU/Linux with kernels >= 2.4,
with ATAPI/CAM support enabled in the kernel, see atapicam(4). on FreeBSD with ATAPI/CAM enabled in the kernel (see man atapicam),
and on OpenSolaris (tested with kernel 5.11).
On other X/Open compliant systems there will only be pseudo drives, but no On other X/Open compliant systems there will only be pseudo drives, but no
direct MMC operation on real CD/DVD/BD drives. direct MMC operation on real CD/DVD/BD drives.
......
...@@ -13,7 +13,8 @@ Copyright (C) 2006-2010 Thomas Schmitt, provided under GPL version 2 or later. ...@@ -13,7 +13,8 @@ Copyright (C) 2006-2010 Thomas Schmitt, provided under GPL version 2 or later.
cdrskin is a limited cdrecord compatibility wrapper which allows to use cdrskin is a limited cdrecord compatibility wrapper which allows to use
most of the libburn features from the command line. most of the libburn features from the command line.
Currently it is supported on Linux with kernels >= 2.4 and on FreeBSD. Currently it is supported on GNU/Linux with kernels >= 2.4,
on FreeBSD and on OpenSolaris.
IDE drives under Linux 2.4. need kernel module ide-scsi. IDE drives under Linux 2.4. need kernel module ide-scsi.
ATA and SATA drives under FreeBSD need kernel module atapicam. ATA and SATA drives under FreeBSD need kernel module atapicam.
On other X/Open compliant systems there will only be emulated drives, but no On other X/Open compliant systems there will only be emulated drives, but no
......
...@@ -269,8 +269,9 @@ Bug fixes towards cdrskin-0.7.8.pl00: ...@@ -269,8 +269,9 @@ Bug fixes towards cdrskin-0.7.8.pl00:
<DT><H3>Development snapshot, version 0.8.1 :</H3></DT> <DT><H3>Development snapshot, version 0.8.1 :</H3></DT>
<DD>Enhancements towards current stable version 0.8.0.pl00: <DD>Enhancements towards current stable version 0.8.0.pl00:
<UL> <UL>
<LI>none yet</LI> <LI>A new system adapter allows to burn CD, DVD and BD on OpenSolaris</LI>
<!-- <!--
<LI>none yet</LI>
--> -->
</UL> </UL>
...@@ -278,8 +279,14 @@ Bug fixes towards cdrskin-0.7.8.pl00: ...@@ -278,8 +279,14 @@ Bug fixes towards cdrskin-0.7.8.pl00:
<DD>Bug fixes towards cdrskin-0.8.0.pl00: <DD>Bug fixes towards cdrskin-0.8.0.pl00:
<UL> <UL>
<LI>none yet</LI> <LI>
CD TOC was not read if the first track did not start at LBA 0
</LI>
<LI>
CD-ROM media got attributed random lead-in and lead-out adresses
</LI>
<!-- <!--
<LI>none yet</LI>
--> -->
</UL> </UL>
</DD> </DD>
......
#define Cdrskin_timestamP "2010.06.07.171706" #define Cdrskin_timestamP "2010.06.07.172925"
...@@ -434,6 +434,8 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff ...@@ -434,6 +434,8 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x00020009 (SORRY,HIGH) = Neither stdio-path nor its directory exist 0x00020009 (SORRY,HIGH) = Neither stdio-path nor its directory exist
0x0002000a (FAILURE,HIGH) = Cannot accept '...' as SG_IO CDROM drive 0x0002000a (FAILURE,HIGH) = Cannot accept '...' as SG_IO CDROM drive
0x0002000b (FAILURE,HIGH) = File object '...' not found 0x0002000b (FAILURE,HIGH) = File object '...' not found
0x0002000c (FAILURE,HIGH) = Cannot start device file enumeration
0x0002000d (FAILURE,HIGH) = Cannot enumerate next device
General library operations: General library operations:
......
/* os-libcdio.h
Operating system specific libburn definitions and declarations. Included
by os.h in case of compilation for
Solaris based systems, e.g. SunOS 5.11
with Solaris uscsi MMC transport adapter sg-solaris.c
Copyright (C) 2010 Thomas Schmitt <scdbackup@gmx.net>, provided under GPLv2+
*/
/** List of all signals which shall be caught by signal handlers and trigger
a graceful abort of libburn. (See man signal.h)
*/
/* Once as system defined macros */
#define BURN_OS_SIGNAL_MACRO_LIST \
SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, \
SIGFPE, SIGSEGV, SIGPIPE, SIGALRM, SIGTERM, \
SIGUSR1, SIGUSR2, SIGXCPU, SIGTSTP, SIGTTIN, \
SIGTTOU
/* Once as text 1:1 list of strings for messages and interpreters */
#define BURN_OS_SIGNAL_NAME_LIST \
"SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGABRT", \
"SIGFPE", "SIGSEGV", "SIGPIPE", "SIGALRM", "SIGTERM", \
"SIGUSR1", "SIGUSR2", "SIGXCPU", "SIGTSTP", "SIGTTIN", \
"SIGTTOU"
/* The number of above list items */
#define BURN_OS_SIGNAL_COUNT 16
/** To list all signals which shall surely not be caught */
#define BURN_OS_NON_SIGNAL_MACRO_LIST \
SIGKILL, SIGCHLD, SIGSTOP, SIGURG, SIGWINCH
/* The number of above list items */
#define BURN_OS_NON_SIGNAL_COUNT 5
/* The maximum size for a (SCSI) i/o transaction */
/* Important : MUST be at least 32768 ! */
/* My Blu-ray burner LG GGW-H20 writes junk if stream recording is combined
with buffer size 32 kB. So stream recording is allowed only with size 64k.
>>> ??? is 64 kB ok for Solaris uscsi ?
*/
#define BURN_OS_TRANSPORT_BUFFER_SIZE 65536
/* >>> */
/* To hold the position of the most recently delivered address from
device enumeration.
*/
struct burn_drive_enumerator_struct {
void *dir;
};
#define BURN_OS_DEFINE_DRIVE_ENUMERATOR_T \
typedef struct burn_drive_enumerator_struct burn_drive_enumerator_t;
/* The list of operating system dependent elements in struct burn_drive.
Usually they are initialized in sg-*.c:enumerate_common().
*/
#define BURN_OS_TRANSPORT_DRIVE_ELEMENTS \
int fd;
...@@ -14,6 +14,14 @@ ...@@ -14,6 +14,14 @@
*/ */
#ifdef Libburn_use_sg_dummY
/* --------- Any other system. With dummy MMC transport sg-dummy.c --------- */
#include "os-dummy.h"
#else
#ifdef Libburn_use_libcdiO #ifdef Libburn_use_libcdiO
...@@ -45,6 +53,14 @@ ...@@ -45,6 +53,14 @@
#include "os-linux.h" #include "os-linux.h"
#else
#ifdef __sun
/* ------- Solaris (e.g. SunOS 5.11) with uscsi ------ */
#include "os-solaris.h"
#else #else
...@@ -52,10 +68,12 @@ ...@@ -52,10 +68,12 @@
#include "os-dummy.h" #include "os-dummy.h"
#endif /* ! __sun*/
#endif /* ! __linux */ #endif /* ! __linux */
#endif /* ! __FreeBSD__kernel__ */ #endif /* ! __FreeBSD__kernel__ */
#endif /* ! __FreeBSD__ */ #endif /* ! __FreeBSD__ */
#endif /* ! Libburn_use_libcdiO */ #endif /* ! Libburn_use_libcdiO */
#endif /* ! Libburn_use_sg_dummY */
#endif /* ! BURN_OS_H_INCLUDED */ #endif /* ! BURN_OS_H_INCLUDED */
......
This diff is collapsed.
/* sg.c /* sg.c
Switcher for operating system dependent transport level modules of libburn. Switcher for operating system dependent transport level modules of libburn.
Copyright (C) 2009 Thomas Schmitt <scdbackup@gmx.net>, provided under GPLv2+ Copyright (C) 2009 - 2010 Thomas Schmitt <scdbackup@gmx.net>,
provided under GPLv2+
*/ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
...@@ -10,6 +11,11 @@ ...@@ -10,6 +11,11 @@
#endif #endif
#ifdef Libburn_use_sg_dummY
#include "sg-dummy.c"
#else
#ifdef Libburn_use_libcdiO #ifdef Libburn_use_libcdiO
#include "sg-libcdio.c" #include "sg-libcdio.c"
...@@ -29,6 +35,11 @@ ...@@ -29,6 +35,11 @@
#include "sg-linux.c" #include "sg-linux.c"
#else
#ifdef __sun
#include "sg-solaris.c"
#else #else
/* The dummy adapter formally fulfills the expectations of libburn towards /* The dummy adapter formally fulfills the expectations of libburn towards
...@@ -51,8 +62,10 @@ static int intentional_compiler_warning(void) ...@@ -51,8 +62,10 @@ static int intentional_compiler_warning(void)
#include "sg-dummy.c" #include "sg-dummy.c"
#endif /* ! __sun */
#endif /* ! __linux */ #endif /* ! __linux */
#endif /* ! __FreeBSD_kernel__ */ #endif /* ! __FreeBSD_kernel__ */
#endif /* ! __FreeBSD__ */ #endif /* ! __FreeBSD__ */
#endif /* ! Libburn_use_libcdiO */ #endif /* ! Libburn_use_libcdiO */
#endif /* ! Libburn_use_sg_dummY */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment