From: strobe a. <ana...@ma...> - 2001-08-03 14:38:58
|
Hey, I'm interested in porting cdrdao to Darwin but there aren't many clues as= to how exactly it works (looking at the 1.1.5 archive I decompressed).= There is some mention that it uses the same 'SCSI library' as cdrecord, but= to my knowledge that hasn't been ported either. Do I need to have intimate= knowledge of cdrecord before I can port cdrdao? I only have two CD-Rs. A working Ricoh MP7083A (ATA drive) and a= coaster-making JVC XR-W2026 crapmatic (SCSI). I'm mostly interested in= getting RAW DAO to work. I can already burn various kinds of CDs on this OS using closed-source= programs, but they don't support RAW DAO. I'm somewhat knowledgeable in how= Darwin functions, but not at all with how cdrdao does. Is there a detailed= description of how cdrdao communicates with the drive? How this process= differs between OSs would probably help too. This is basically what I know so far about the inner workings in OS X= (without going through ridiculous detail). OS X (or Darwin, same thing in= this context) has a well organized object-oriented driver architecture= called IOKit or "I/O Kit". It also has a registry which is a vast hierarchy= encompassing all hardware and drivers detected. In OS X my CD-R burner is= recognized as an atapi device type. The atapi 'protocol transport' appears= to manage the atapi protocol. Then, curiously, it's registered as a SCSI= peripheral (I've read that cdrecord does something similar, but I'm not= familiar with the reasoning or history behind this. Other ATA devices like= hard drives are registered as ATA block devices, but the CDRW burner is= registered as a SCSI peripheral.). It's then registered as a SCSI= peripheral "Type05" which I speculate means a CD/DVD device. This is then= used by a CD block storage driver and a SCSI 'task' 'initer' or "CDIniter"= driver which I suppose notifies the system when something is inserted. At this point there is no CD and no BSD character device etc. When you= insert a CD a media device called "CD-R/RW RW7083A" (my Ricoh drive) is= created which has BSD related info like the character device name, major,= minor, block size, etc. and a device shows up on /dev/. A bunch of other= objects are created like a CD partition scheme and a bunch of partitions= (this CD had 9). The "Type" was also a "CD-ROM". However if I inserted a= blank CD some of these values change like the "Type" becomes a "CD-R". I have looked at the Darwin source code and everything corresponds. All= this is within the scope of the public source. This means when I insert a= blank CD with nothing but a console running (no graphical CD burning crap)= I should get that (non-writable) BSD character device along with the= IOMedia device (abstract media object). Unfortunately this doesn't appear= to allow me to write blocks never mind subchannel data via RAW DAO mode.= The way one commercial CD burning app works is to connect to a Type05 SCSI= peripheral device nub instead of the compact disk services Thus if I'm= burning a CD image I don't think the BSD device is ever created. The way= another *cough* 1st party *cough* disk burning program works is to connect= to the relatively lower-level SCSI peripheral device nub which has a= specific Vendor, Product, Revision, etc. instead of merely a Type05, thus= (I think) taking place of the higher-level Type05 device family. Both= closed-source programs connect to a SCSI peripheral nub (both of which are= open source) regardless if the drive is SCSI, ATA, USB, or FireWire. Now if I know exactly how cdrdao works what I may be able to do is author a= program or library which connects to the SCSI peripheral nub of the CD-R= using that device exclusively (done using a higher probe score). Keep in= mind I don't know much about the SCSI protocol despite using it constantly= since 1986. I also don't know much about the RAW DAO protocol, but I do= know a little about how CD formats work (sector areas are sync, header,= subheader, user, auxiliary, errorflags, subchannel. CDDA uses 2352byte= user, 294 errorflags, 96 subchannel, etc. etc.). I hope somebody on this= list can help in those areas in which I'm clueless so I can get this thing= to work. The only other thing I'll mention is I could install LinuxPPC on this= machine if that's of any help. Perhaps somebody knows cdrdao works well in= LinuxPPC so I can test the burner (MP7083A isn't listed on your web pages).= I guess I could also install the burner in one of my PCs, although it= wouldn't be convenient. Thanks for any assistance. =46YI: IOService hierarchy (ignore pipes and irrelevant data like power management)= : +-o Root <class IORegistryEntry> +-o PowerMac3,1 <class IOPlatformExpertDevice> +-o Core99PE <class Core99PE> | +-o pci@f2000000 <class IOPlatformDevice> | | +-o AppleMacRiscPCI <class AppleMacRiscPCI> | | +-o pci-bridge@D <class IOPCIDevice> | | +-o IOPCI2PCIBridge <class IOPCI2PCIBridge> | | +-o mac-io@7 <class IOPCIDevice> | | | +-o KeyLargo <class KeyLargo> | | | +-o ata-3@20000 <class AppleMacIODevice> | | | | +-o KeyLargoATA <class KeyLargoATA> | | | | +-o ATADeviceNub <class ATADeviceNub> | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocol= Transport> | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeriph= eralDeviceNub> | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIP= eripheralDeviceType05> | | | | +-o IOCompactDiscServices <class IOCompactDis= cServices> | | | | +-o IOCDBlockStorageDriver <class IOCDBlock= StorageDriver> | | | | +-o SCSITaskUserClientIniter <class SCSITas= kUserClientIniter> | | | | +-o SCSITaskUserClient <class SCSITaskUserC= lient> Some details about interesting objects when inserting blank CD: | | | | +-o ATADeviceNub <class ATADeviceNub> | | | | | { | | | | | "unit number" =3D 0 | | | | | "socket type" =3D "internal" | | | | | "ata device type" =3D "atapi" | | | | | "device serial" =3D " " | | | | | "device revision" =3D "1.20 " | | | | | "device model" =3D " CD-R/RW RW7083A = " | | | | | "IOUnit" =3D 0 | | | | | } | | | | | | | | | +-o IOATAPIProtocolTransport <class IOATAPIProtocol= Transport> | | | | | { | | | | | "Power Management protected data" =3D "{ theNu= mberOfPowerStates =3D 2, version 1, power state 0 =3D { capabilityFlags= 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000,= staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0,= settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 },= power state 1 =3D { capabilityFlags 0000c080, outputPowerCharacter= 00000002, inputPowerRequirement 00000022, staticPower 0, unbudgetedPower 0,= powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0,= settleDownTime 0, powerDomainBudget 0 }, aggressiveness =3D 0,= myCurrentState =3D 1, parentsCurrentPowerFlags =3D 00000022, maxCapability= =3D 1 }" | | | | | "IOMatchCategory" =3D "IODefaultMatchCategory" | | | | | "IOClass" =3D "IOATAPIProtocolTransport" | | | | | "ata device type" =3D "atapi" | | | | | "IOProviderClass" =3D "IOATADevice" | | | | | "IOProbeScore" =3D 0 | | | | | "CFBundleIdentifier" =3D "com.apple.iokit.IOAT= APIProtocolTransport" | | | | | "Power Management private data" =3D "{ this= object =3D 02d62800, interested driver =3D 02d62800, driverDesire =3D 1,= deviceDesire =3D 1, ourDesiredPowerState =3D 1, previousRequest =3D 98 }" | | | | | } | | | | | | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeriph= eralDeviceNub> | | | | | { | | | | | "IOMatchCategory" =3D "SCSITaskUserClientDev= ice" | | | | | "Product Identification" =3D "CD-R/RW RW7083= A" | | | | | "IOClass" =3D "IOSCSIPeripheralDeviceNub" | | | | | "IOProviderClass" =3D "IOSCSIProtocolService= s" | | | | | "IOProbeScore" =3D 0 | | | | | "Peripheral Device Type" =3D 5 | | | | | "CFBundleIdentifier" =3D "com.apple.iokit.IO= SCSIArchitectureModelFamily" | | | | | "Vendor Identification" =3D " D=92A= rt=F7=ED=BFb< =91 =F7(" | | | | | "Product Revision Level" =3D "1.20" | | | | | } | | | | | | | | | +-o IOSCSIPeripheralDeviceType05 <class IOSCSIP= eripheralDeviceType05> | | | | | { | | | | | "CD Features" =3D 15 | | | | | "IOMatchCategory" =3D "IODefaultMatchCateg= ory" | | | | | "Power Management protected data" =3D "{ t= heNumberOfPowerStates =3D 5, version 1, power state 0 =3D { capabilityFlags= 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000,= staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0,= settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 },= power state 1 =3D { capabilityFlags 00000000, outputPowerCharacter= 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0,= powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0,= settleDownTime 0, powerDomainBudget 0 }, power state 2 =3D {= capabilityFlags 00008040, outputPowerCharacter 00000002, inputPowerRequirem= ent 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0,= timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0,= powerDomainBudget 0 }, power state 3 =3D { capabilityFlags 00008040, output= PowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0,= unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0,= timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 4 =3D {= capabilityFlags 0000c040, outputPowerCharacter 00000002, inputPowerRequirem= ent 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0,= timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0,= powerDomainBudget 0 }, aggressiveness =3D 0, myCurrentState =3D 4, parentsC= urrentPowerFlags =3D 00000002, maxCapability =3D 4 }" | | | | | "IOClass" =3D "IOSCSIPeripheralDeviceType0= 5" | | | | | "IOProviderClass" =3D "IOSCSIPeripheralDev= iceNub" | | | | | "Peripheral Device Type" =3D 5 | | | | | "IOProbeScore" =3D 5000 | | | | | "CFBundleIdentifier" =3D "com.apple.iokit.= IOSCSIMultimediaCommandsDevice" | | | | | "DVD Features" =3D 0 | | | | | "Power Management private data" =3D "{= this object =3D 02d6c300, interested driver =3D 02d6c300, driverDesire =3D= 1, deviceDesire =3D 4, ourDesiredPowerState =3D 4, previousRequest =3D 66 }= " | | | | | } | | | | | | | | | +-o IOCompactDiscServices <class IOCompactDis= cServices> | | | | | { | | | | | "IOMatchCategory" =3D "SCSITaskAuthoring= Device" | | | | | "IOMaximumBlockCountWrite" =3D 256 | | | | | "IOMaximumSegmentCountRead" =3D 32 | | | | | "IOMaximumSegmentCountWrite" =3D 32 | | | | | "IOCFPlugInTypes" =3D {"97ABCF2C-23CC-11= D5-A0E8-003065704866"=3D"IOSCSIArchitectureModelFamily.kext/Contents/PlugIns= /SCSITaskUserClient.kext/Contents/PlugIns/SCSITaskLib.plugin"} | | | | | "IOMaximumBlockCountRead" =3D 256 | | | | | "device-type" =3D "CDROM" | | | | | "SCSITaskUserClient GUID" =3D <02d96e800= 000001913fe211e> | | | | | "IOUserClientClass" =3D "SCSITaskUserCli= ent" | | | | | } | | | | | | | | | +-o IOCDBlockStorageDriver <class IOCDBlock= StorageDriver> | | | | | | { | | | | | | "Statistics" =3D {"Bytes (Read)"=3D271= 664,"Latency Time (Write)"=3D0,"Total Time (Read)"=3D0,"Errors (Write)"=3D0,= "Retries (Write)"=3D0,"Total Time (Write)"=3D0,"Bytes (Write)"=3D0,"Operatio= ns (Write)"=3D0,"Operations (Read)"=3D153,"Latency Time (Read)"=3D0,"Errors= (Read)"=3D1,"Retries (Read)"=3D0} | | | | | | "IOMatchCategory" =3D "IODefaultMatchC= ategory" | | | | | | "IOClass" =3D "IOCDBlockStorageDriver" | | | | | | "IOProviderClass" =3D "IOCDBlockStorag= eDevice" | | | | | | "IOPropertyMatch" =3D {"device-type"= =3D"CDROM"} | | | | | | "IOProbeScore" =3D 0 | | | | | | "CFBundleIdentifier" =3D "com.apple.io= kit.IOCDStorageFamily" | | | | | | "IOGeneralInterest" =3D ("_IOServiceIn= terestNotifier is not serializable") | | | | | | } | | | | | | | | | | | +-o D=92A rt=F7=ED=BFb< =91 =F7( CD-R/RW= RW7083A Media <class IOCDMedia> | | | | | | { | | | | | | "BSD Unit" =3D 2 | | | | | | "Content" =3D "" | | | | | | "Whole" =3D Yes | | | | | | "BSD Minor" =3D 20 | | | | | | "Type" =3D "CD-R" | | | | | | "Preferred Block Size" =3D 2352 | | | | | | "Ejectable" =3D Yes | | | | | | "Writable" =3D No | | | | | | "Size" =3D 2352 | | | | | | "TOC" =3D <00020000> | | | | | | "BSD Name" =3D "disk2" | | | | | | "Content Hint" =3D "" | | | | | | "BSD Major" =3D 14 | | | | | | "Leaf" =3D Yes | | | | | | } | | | | | | | | | | | +-o IOCDMediaBSDClient <class IOCDMedia= BSDClient> | | | | | { | | | | | "IOMatchCategory" =3D "IOMediaBSDC= lient" | | | | | "IOPersonalityName" =3D "IOCDMedia= BSDClient" | | | | | "IOClass" =3D "IOCDMediaBSDClient" | | | | | "IOProbeScore" =3D 31000 | | | | | "IOProviderClass" =3D "IOCDMedia" | | | | | "CFBundleIdentifier" =3D "com.appl= e.iokit.IOCDStorageFamily" | | | | | "ParentKey" =3D "KEXTBundle?com.ap= ple.iokit.IOCDStorageFamily" | | | | | } | | | | | | | | | +-o SCSITaskUserClientIniter <class SCSITas= kUserClientIniter> | | | | | { | | | | | "IOProviderMergeProperties" =3D {"IOCF= PlugInTypes"=3D{"97ABCF2C-23CC-11D5-A0E8-003065704866"=3D"IOSCSIArchitecture= ModelFamily.kext/Contents/PlugIns/SCSITaskUserClient.kext/Contents/PlugIns/S= CSITaskLib.plugin"},"IOUserClientClass"=3D"SCSITaskUserClient"} | | | | | "IOMatchCategory" =3D "SCSITaskAuthori= ngDevice" | | | | | "IOPersonalityName" =3D "CDIniter" | | | | | "IOClass" =3D "SCSITaskUserClientInite= r" | | | | | "IOProviderClass" =3D "IOCompactDiscSe= rvices" | | | | | "IOProbeScore" =3D 0 | | | | | "CFBundleIdentifier" =3D "com.apple.io= kit.SCSITaskUserClient" | | | | | "ParentKey" =3D "KEXTBundle?com.apple.= iokit.SCSITaskUserClient" | | | | | } | | | | | | | | | +-o SCSITaskUserClient <class SCSITaskUserC= lient> | | | | { | | | | } | | | | BTW what is "Leaf"? |
From: Giuseppe C. <co...@lu...> - 2001-08-04 13:04:33
|
On Fri, 3 Aug 2001, strobe anarkhos wrote: > Hey, > I'm interested in porting cdrdao to Darwin but there aren't many >clues as to how exactly it works (looking at the 1.1.5 archive I >decompressed). There is some mention that it uses the same 'SCSI library' >as cdrecord, but to my knowledge that hasn't been ported either. Do I >need to have intimate knowledge of cdrecord before I can port cdrdao? Cdrdao's low level SCSI transport library is libscg, written by Joerg Schilling, and found in his cdrecord's package. From what I see in the latest version he met some problems in porting to Darwin. Porting libscg is the first step. You should read PORTING and README.macosX. Question regarding libscg are welcome on cdrecord-devel mailing list (http://lists.berlios.de/mailman/listinfo/cdrecord-developers) ... > I can already burn various kinds of CDs on this OS using >closed-source programs, but they don't support RAW DAO. I'm somewhat >knowledgeable in how Darwin functions, but not at all with how cdrdao >does. Is there a detailed description of how cdrdao communicates with the >drive? How this process differs between OSs would probably help too. Cdrdao sends standard SCSI commands. You're not interested in why and what. Libscg handles the command transport and the way it does is platform-specific. I am not a C++ programmer but I think that cdrdao would compile and work without hassle (perhaps some trouble can come from posix threads). ... > This is basically what I know so far about the inner workings in >OS X (without going through ridiculous detail). OS X (or Darwin, same >thing in this context) has a well organized object-oriented driver >architecture called IOKit or "I/O Kit". It also has a registry which is a >vast hierarchy encompassing all hardware and drivers detected. In OS X my >CD-R burner is recognized as an atapi device type. The atapi 'protocol >transport' appears to manage the atapi protocol. Then, curiously, it's >registered as a SCSI peripheral (I've read that cdrecord does something >similar, but I'm not familiar with the reasoning or history behind this. >Other ATA devices like hard drives are registered as ATA block devices, >but the CDRW burner is registered as a SCSI peripheral.). It's then >registered as a SCSI peripheral "Type05" which I speculate means a CD/DVD >device. This is then used by a CD block storage driver and a SCSI 'task' >'initer' or "CDIniter" driver which I suppose notifies the system when >something is inserted. Atapi is SCSI protocol over IDE bus. ... > Now if I know exactly how cdrdao works what I may be able to do > is author a program or library which connects to the SCSI peripheral > nub of the CD-R using that device exclusively (done using a higher > probe score). Keep in mind I don't know much about the SCSI protocol > despite using it constantly since 1986. I also don't know much about > the RAW DAO protocol, but I do know a little about how CD formats work > (sector areas are sync, header, subheader, user, auxiliary, > errorflags, subchannel. CDDA uses 2352byte user, 294 errorflags, 96 > subchannel, etc. etc.). I hope somebody on this list can help in those > areas in which I'm clueless so I can get this thing to work. You will need to understand OS specific SCSI transport support. For some examples in what is expecting you look at libscg/scsi-{aix,apollo,...}.c in cdrecord package. ... PS: MAX 80 COLUMNS IN YOUR EMAIL, PLZ!!! -- Giuseppe "Cowo" Corbelli -->> Riding on Linux-2.4.7-xfs -<! Computer programmers never die, they just get lost in the processing. !>- |
From: strobe a. <ana...@ma...> - 2001-08-04 14:58:44
|
At 4:01 PM -0400 8/4/01, Giuseppe Corbelli wrote: >On Fri, 3 Aug 2001, strobe anarkhos wrote: >> Hey, >> I'm interested in porting cdrdao to Darwin but there aren't many >>clues as to how exactly it works (looking at the 1.1.5 archive I >>decompressed). There is some mention that it uses the same 'SCSI library' >>as cdrecord, but to my knowledge that hasn't been ported either. Do I >>need to have intimate knowledge of cdrecord before I can port cdrdao? >Cdrdao's low level SCSI transport library is libscg, written by Joerg >Schilling, and found in his cdrecord's package. From what I see in the >latest version he met some problems in porting to Darwin. >Porting libscg is the first step. You should read PORTING and >README.macosX. Question regarding libscg are welcome on cdrecord-devel >mailing list >(http://lists.berlios.de/mailman/listinfo/cdrecord-developers) So if I port libscg everything else should work? (that list had a total of three messages in 3 months) Last I checked cdrecord was last ported to Rhapsody (Darwin 0.3) which has little relation to Darwin 1.x. Regardless I'll take a good look at it. > >PS: MAX 80 COLUMNS IN YOUR EMAIL, PLZ!!! >>I'm on a crusade to avoid >getting >>emails like >this |
From: Giuseppe C. <co...@lu...> - 2001-08-06 09:08:12
|
On Sat, 4 Aug 2001, strobe anarkhos wrote: > At 4:01 PM -0400 8/4/01, Giuseppe Corbelli wrote: > >On Fri, 3 Aug 2001, strobe anarkhos wrote: > >> Hey, > >> I'm interested in porting cdrdao to Darwin but there aren't many > >>clues as to how exactly it works (looking at the 1.1.5 archive I > >>decompressed). There is some mention that it uses the same 'SCSI library' > >>as cdrecord, but to my knowledge that hasn't been ported either. Do I > >>need to have intimate knowledge of cdrecord before I can port cdrdao? > >Cdrdao's low level SCSI transport library is libscg, written by Joerg > >Schilling, and found in his cdrecord's package. From what I see in the > >latest version he met some problems in porting to Darwin. > >Porting libscg is the first step. You should read PORTING and > >README.macosX. Question regarding libscg are welcome on cdrecord-devel > >mailing list > >(http://lists.berlios.de/mailman/listinfo/cdrecord-developers) > > So if I port libscg everything else should work? (that list had a > total of three messages in 3 months) The hard work should be done. I'm not subscribed to that list but it should be the right place > Last I checked cdrecord was last ported to Rhapsody (Darwin 0.3) which > has little relation to Darwin 1.x. This is the only info I have (AN-1.10) First support for Mac OS X (Darwin variant) This is the MAC OX X version that uses the new mach kernel and has no user SCSI support -- Giuseppe "Cowo" Corbelli -->> Riding on Linux-2.4.7-xfs -<! Desasters in our century: Hiroshima 45, Cernobyl 86, windoze95 !>- |
From: Andreas M. <an...@da...> - 2001-08-07 05:47:05
|
strobe anarkhos wrote: > > At 4:01 PM -0400 8/4/01, Giuseppe Corbelli wrote: > >On Fri, 3 Aug 2001, strobe anarkhos wrote: > >> Hey, > >> I'm interested in porting cdrdao to Darwin but there aren't many > >>clues as to how exactly it works (looking at the 1.1.5 archive I > >>decompressed). There is some mention that it uses the same 'SCSI library' > >>as cdrecord, but to my knowledge that hasn't been ported either. Do I > >>need to have intimate knowledge of cdrecord before I can port cdrdao? > >Cdrdao's low level SCSI transport library is libscg, written by Joerg > >Schilling, and found in his cdrecord's package. From what I see in the > >latest version he met some problems in porting to Darwin. > >Porting libscg is the first step. You should read PORTING and > >README.macosX. Question regarding libscg are welcome on cdrecord-devel > >mailing list > >(http://lists.berlios.de/mailman/listinfo/cdrecord-developers) > > So if I port libscg everything else should work? (that list had a total of three messages in 3 months) > > Last I checked cdrecord was last ported to Rhapsody (Darwin 0.3) which has little relation to Darwin 1.x. You do not have to port libscg (which could be quiet difficult). Instead you could just write your own SCSI Interface implementation for your OS. The interface is defined in "dao/ScsiIf.h". Example non libscg implementations are found in "dao/ScsiIf-linux.cc" or "dao/ScsiIf-freebsd-cam.cc". If you're facing problems with the Posix threads you can also compile cdrdao without thread support (configure option). It will then use SYSV shared memory and fork a child process to implement the buffering. I could also implement another method to get shared memory if Darwin does not have SYSV IPC support. Andreas -- Andreas Mueller Tel: +49 89 67808848 Ramsmeierstr. 1 Email: an...@da... 85579 Neubiberg, Germany |
From: strobe a. <ana...@ma...> - 2001-08-05 18:43:44
|
> > > > > So if I port libscg everything else should work? (that list had a total of three messages in 3 months) >> >> Last I checked cdrecord was last ported to Rhapsody (Darwin 0.3) which has little relation to Darwin 1.x. > >You do not have to port libscg (which could be quiet difficult). >Instead you could just write your own SCSI Interface implementation for >your OS. The interface is defined in "dao/ScsiIf.h". Example non libscg >implementations are found in "dao/ScsiIf-linux.cc" or >"dao/ScsiIf-freebsd-cam.cc". > >If you're facing problems with the Posix threads you can also compile >cdrdao without thread support (configure option). It will then use >SYSV shared memory and fork a child process to implement the buffering. >I could also implement another method to get shared memory if Darwin >does not have SYSV IPC support. > Thank you very much for this info! I have looked at libscg and it's definitely a lot lower level than I wish especially since Darwin provides a method for device discovery which I don't want to bypass. Darwin has excellent pthread support (and will soon have SysV thread support) so that's not an issue. This currently looks more likely than a libscg port. OS X users will have free built-in burning capability for ISO 9660 and other formats so I think the usefulness of cdrecord is minimal. |
From: strobe a. <ana...@ma...> - 2001-08-06 10:22:00
|
I'm not going to suggest anything will be released soon, but libscg has been= ported well enough to use cdrecord: [localhost:cdrecord/OBJ/powerpc-darwin-cc] anarkhos% ./cdrecord dev=3D0,4,0 = -checkdrive Cdrecord 1.10 (powerpc-apple-macosx1.3.7) Copyright (C) 1995-2001 J=96rg Sch= illing scsidev: '0,4,0' scsibus: 0 target: 4 lun: 0 Using libscg version 'schily-0.5' 0xE00002BC 0xE00002BC Device type : Removable CD-ROM Version : 2 Response Format: 2 Capabilities : SYNC LINKED CMDQUE Vendor_info : 'JVC ' Identifikation : 'R2626 ' Revision : '2.05' Device seems to be: Teac CD-R50S. 0xE00002BC 0xE00002BC 0xE00002BC 0xE00002BC 0xE00002E7 0xE00002BC Using driver for Teac CD-R50S, Teac CD-R55S, JVC XR-W2010, Pinnacle RCD-5020= (teac_cdr50). Driver flags : SWABAUDIO (I know this CD-R drive isn't adequate to run cdrdao. I have a Ricoh WR7083A= for that) |