*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> cd (4)              



NAME    [Toc]    [Back]

     cd - ATAPI and SCSI CD-ROM driver

SYNOPSIS    [Toc]    [Back]

     cd* at scsibus? target ? lun ?
     #cd0 at scsibus0 target 6 lun 0  (fixed-configuration  example)

DESCRIPTION    [Toc]    [Back]

     The  cd  driver  provides  support for ATAPI and SCSI CD-ROM
(Compact Disc
     Read-Only Memory) drives, via scsibus(4).  In an attempt  to
look like a
     regular  disk,  the cd driver synthesizes a partition table,
with one partition
 covering the entire CD-ROM.  It is possible to modify
this partition
  table  using disklabel(8), but it will only last until
the CD-ROM is
     unmounted.  In general the interfaces are similar  to  those
described by
     wd(4) and sd(4).

     As  the  SCSI adapter is probed during boot, the SCSI bus is
scanned for
     devices.  Any devices found which  answer  as  ``Read-only''
     ``removable'' CD-ROM or WORM devices will be ``attached'' to
the cd driver.

     The system utility disklabel(8) may be used to read the synthesized disk
     label  structure, which will contain correct figures for the
size of the
     CD-ROM should that information be required.


     Any number of CD-ROM devices may be attached to  the  system
regardless of
     system  configuration as all resources are dynamically allocated.

IOCTLS    [Toc]    [Back]

     The following ioctl(2) calls which apply  to  CD-ROM  drives
are defined in
     the header files <sys/cdio.h> and <sys/disklabel.h>.

             (struct disklabel) Read or write the in-core copy of
the disklabel
 for the drive.   The  disklabel  is  initialized
with information
             read  from  the SCSI inquiry commands, and should be
the same as
             the information printed at boot.  This structure  is
defined in

             (struct ioc_play_track) Start audio playback given a
track address
 and length.  The structure is defined as  follows:

                   struct ioc_play_track {
                           u_char  start_track;
                           u_char  start_index;
                           u_char  end_track;
                           u_char  end_index;

             (struct  ioc_play_blocks) Start audio playback given
a block address
 and length.  The structure is defined as  follows:

                   struct ioc_play_blocks {
                           int     blk;
                           int     len;

             (struct  ioc_play_msf)  Start audio playback given a
 address and length.  The  structure
is defined as

                   struct ioc_play_msf {
                           u_char  start_m;
                           u_char  start_s;
                           u_char  start_f;
                           u_char  end_m;
                           u_char  end_s;
                           u_char  end_f;

             (struct  ioc_read_subchannel)  Read information from
the subchannel
             at the location specified by this structure:

                   struct ioc_read_subchannel {
                           u_char address_format;
                   #define CD_LBA_FORMAT   1
                   #define CD_MSF_FORMAT   2
                           u_char data_format;
                   #define CD_SUBQ_DATA            0
                   #define CD_CURRENT_POSITION     1
                   #define CD_MEDIA_CATALOG        2
                   #define CD_TRACK_INFO           3
                           u_char track;
                           int     data_len;
                           struct  cd_sub_channel_info *data;

             (struct ioc_toc_header) Return  summary  information
about the
             table  of  contents for the mounted CD-ROM.  The information is returned
 into the following structure:

                   struct ioc_toc_header {
                           u_short len;
                           u_char  starting_track;
                           u_char  ending_track;

             (struct ioc_read_toc_entry) Return information  from
the table of
             contents entries mentioned.  (Yes, this command name
is misspelled.)
  The argument structure is defined as follows:

                   struct ioc_read_toc_entry {
                           u_char  address_format;
                           u_char  starting_track;
                           u_short data_len;
                           struct  cd_toc_entry *data;
             The  requested  data is written into an area of size
data_len and
             pointed to by data.

             (struct ioc_patch) Attach various audio channels  to
various output
  channels.   The  argument  structure is defined

                   struct ioc_patch {
                           u_char  patch[4];
                           /* one for each channel */

             (struct ioc_vol) Get  (set)  information  about  the
volume settings
             of  the  output channels.  The argument structure is
as follows:

                   struct  ioc_vol {
                           u_char  vol[4];
                           /* one for each channel */

             Patch all output channels to all source channels.

             Patch left source channel to the left output channel
and the
             right source channel to the right output channel.

             Mute output without changing the volume settings.

             Attach  both  output  channels  to  the left (right)
source channel.

             Turn on (off) debugging for the appropriate  device.

             Pause (resume) audio play, without resetting the location of the

             Reset the drive.

             Tell the drive to spin-up (-down) the CD-ROM.

             Tell the drive to allow (prevent) manual ejection of
the CD-ROM
             disc.  Not all drives support this feature.

             Eject the CD-ROM.

     FIBMAP   Return  the physical block number (in 512-byte sectors) given the
             logical block number.  The argument is a pointer  to
an integer.
             On  invocation, it should contain the logical block.
On return,
             it contains the physical block number.

     In addition the general scsi(4) ioctls may be used with  the
cd driver, if
     used  against the `whole disk' partition (i.e., /dev/rcd0c).

NOTES    [Toc]    [Back]

     When a CD-ROM is changed in a drive  controlled  by  the  cd
driver, then the
     act  of changing the media will invalidate the disklabel and
     held within the kernel.  To stop corruption, all accesses to
the device
     will be discarded until there are no more open file descriptors referencing
 the device.  During this period, all new  open  attempts
will be rejected.
   When  no  more open file descriptors reference the
device, the
     first next open will load a new set of parameters (including
     for the drive.

     The  audio  code in the cd driver only supports SCSI-2 standard audio commands.
  Because many CD-ROM manufacturers have not  followed
the standard,
     there  are many CD-ROM drives for which audio will not work.
Some work is
     planned to support some of the more common ``broken'' CD-ROM
drives; however,
 this is not yet under way.

FILES    [Toc]    [Back]

     /dev/cd[0-9][a-p]   block mode CD-ROM devices
     /dev/rcd[0-9][a-p]  raw mode CD-ROM devices

DIAGNOSTICS    [Toc]    [Back]


SEE ALSO    [Toc]    [Back]

     ioctl(2),   intro(4),  scsi(4),  scsibus(4),  sd(4),  wd(4),

HISTORY    [Toc]    [Back]

     The cd driver appeared in 386BSD 0.1.

BUGS    [Toc]    [Back]

     The names of the structures used for the third  argument  to
ioctl() were
     poorly chosen, and a number of spelling errors have survived
in the names
     of the ioctl() commands.

OpenBSD     3.6                        January      16,      1996
[ Back ]
 Similar pages
Name OS Title
atapiscsi OpenBSD ATAPI<->SCSI adapter
scsipi NetBSD SCSI/ATAPI middle-layer interface
burncd FreeBSD control the ATAPI CD-R/RW driver
wdc NetBSD machine-independent IDE/ATAPI driver
ata FreeBSD generic ATA/ATAPI disk controller driver
ad FreeBSD generic ATA/ATAPI disk controller driver
ast FreeBSD generic ATA/ATAPI disk controller driver
afd FreeBSD generic ATA/ATAPI disk controller driver
acd FreeBSD generic ATA/ATAPI disk controller driver
nsp FreeBSD Workbit Ninja SCSI-3 based PC-Card SCSI host adapter driver
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service