The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/cdio.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * 16 Feb 93    Julian Elischer (julian@dialix.oz.au)
    3  *
    4  * $FreeBSD$
    5  */
    6 
    7 /*
    8 <1>     Fixed a conflict with ioctl usage.  There were two different
    9         functions using code #25.  Made file formatting consistent.
   10         Added two new ioctl codes: door closing and audio pitch playback.
   11         Added a STEREO union called STEREO.
   12         5-Mar-95  Frank Durda IV        bsdmail@nemesis.lonestar.org
   13 
   14 <2>     Added a new ioctl that allows you to find out what capabilities
   15         a drive has and what commands it will accept.  This allows a
   16         user application to only offer controls (buttons, sliders, etc)
   17         for functions that drive can actually do.   Things it can't do
   18         can disappear or be greyed-out (like some other system).
   19         If the driver doesn't respond to this call, well, handle it the
   20         way you used to do it.
   21         2-Apr-95  Frank Durda IV        bsdmail@nemesis.lonestar.org
   22 */
   23 
   24 /* Shared between kernel & process */
   25 
   26 #ifndef _SYS_CDIO_H_
   27 #define _SYS_CDIO_H_
   28 
   29 #ifndef _KERNEL
   30 #include <sys/types.h>
   31 #endif
   32 #include <sys/ioccom.h>
   33 
   34 union msf_lba {
   35         struct {
   36                 unsigned char   unused;
   37                 unsigned char   minute;
   38                 unsigned char   second;
   39                 unsigned char   frame;
   40         } msf;
   41         int     lba;    /* network byte order */
   42         u_char  addr[4];
   43 };
   44 
   45 struct cd_toc_entry {
   46         u_int   :8;
   47         u_int   control:4;
   48         u_int   addr_type:4;
   49         u_char  track;
   50         u_int   :8;
   51         union msf_lba  addr;
   52 };
   53 
   54 struct cd_sub_channel_header {
   55         u_int   :8;
   56         u_char  audio_status;
   57 #define CD_AS_AUDIO_INVALID        0x00
   58 #define CD_AS_PLAY_IN_PROGRESS     0x11
   59 #define CD_AS_PLAY_PAUSED          0x12
   60 #define CD_AS_PLAY_COMPLETED       0x13
   61 #define CD_AS_PLAY_ERROR           0x14
   62 #define CD_AS_NO_STATUS            0x15
   63         u_char  data_len[2];
   64 };
   65 
   66 struct cd_sub_channel_position_data {
   67         u_char  data_format;
   68         u_int   control:4;
   69         u_int   addr_type:4;
   70         u_char  track_number;
   71         u_char  index_number;
   72         union msf_lba  absaddr;
   73         union msf_lba  reladdr;
   74 };
   75 
   76 struct cd_sub_channel_media_catalog {
   77         u_char  data_format;
   78         u_int   :8;
   79         u_int   :8;
   80         u_int   :8;
   81         u_int   :7;
   82         u_int   mc_valid:1;
   83         u_char  mc_number[15];
   84 };
   85 
   86 struct cd_sub_channel_track_info {
   87         u_char  data_format;
   88         u_int   :8;
   89         u_char  track_number;
   90         u_int   :8;
   91         u_int   :7;
   92         u_int   ti_valid:1;
   93         u_char  ti_number[15];
   94 };
   95 
   96 struct cd_sub_channel_info {
   97         struct cd_sub_channel_header header;
   98         union {
   99                 struct cd_sub_channel_position_data position;
  100                 struct cd_sub_channel_media_catalog media_catalog;
  101                 struct cd_sub_channel_track_info track_info;
  102         } what;
  103 };
  104 
  105 
  106 /***************************************************************\
  107 * Ioctls for the CD drive                                       *
  108 \***************************************************************/
  109 
  110 struct ioc_play_track
  111 {
  112         u_char  start_track;
  113         u_char  start_index;
  114         u_char  end_track;
  115         u_char  end_index;
  116 };
  117 #define CDIOCPLAYTRACKS _IOW('c',1,struct ioc_play_track)
  118 
  119 
  120 struct ioc_play_blocks
  121 {
  122         int     blk;
  123         int     len;
  124 };
  125 #define CDIOCPLAYBLOCKS _IOW('c',2,struct ioc_play_blocks)
  126 
  127 
  128 struct ioc_read_subchannel {
  129         u_char address_format;
  130 #define CD_LBA_FORMAT   1
  131 #define CD_MSF_FORMAT   2
  132         u_char data_format;
  133 #define CD_SUBQ_DATA            0
  134 #define CD_CURRENT_POSITION     1
  135 #define CD_MEDIA_CATALOG        2
  136 #define CD_TRACK_INFO           3
  137         u_char track;
  138         int     data_len;
  139         struct  cd_sub_channel_info *data;
  140 };
  141 #define CDIOCREADSUBCHANNEL _IOWR('c', 3 , struct ioc_read_subchannel )
  142 
  143 
  144 struct ioc_toc_header {
  145         u_short len;
  146         u_char  starting_track;
  147         u_char  ending_track;
  148 };
  149 #define CDIOREADTOCHEADER _IOR('c',4,struct ioc_toc_header)
  150 
  151 
  152 struct ioc_read_toc_entry {
  153         u_char  address_format;
  154         u_char  starting_track;
  155         u_short data_len;
  156         struct  cd_toc_entry *data;
  157 };
  158 #define CDIOREADTOCENTRYS _IOWR('c',5,struct ioc_read_toc_entry)
  159 
  160 
  161 struct ioc_read_toc_single_entry {
  162         u_char  address_format;
  163         u_char  track;
  164         struct  cd_toc_entry entry;
  165 };
  166 #define CDIOREADTOCENTRY _IOWR('c',6,struct ioc_read_toc_single_entry)
  167 
  168 
  169 struct  ioc_patch
  170 {
  171         u_char  patch[4];       /* one for each channel */
  172 };
  173 #define CDIOCSETPATCH   _IOW('c',9,struct ioc_patch)
  174 
  175 
  176 struct  ioc_vol
  177 {
  178         u_char  vol[4]; /* one for each channel */
  179 };
  180 #define CDIOCGETVOL     _IOR('c',10,struct ioc_vol)
  181 
  182 #define CDIOCSETVOL     _IOW('c',11,struct ioc_vol)
  183 
  184 #define CDIOCSETMONO    _IO('c',12)
  185 
  186 #define CDIOCSETSTERIO  _IO('c',13)
  187 #define CDIOCSETSTEREO  _IO('c',13)
  188 
  189 #define CDIOCSETMUTE    _IO('c',14)
  190 
  191 #define CDIOCSETLEFT    _IO('c',15)
  192 
  193 #define CDIOCSETRIGHT   _IO('c',16)
  194 
  195 #define CDIOCSETDEBUG   _IO('c',17)
  196 
  197 #define CDIOCCLRDEBUG   _IO('c',18)
  198 
  199 #define CDIOCPAUSE      _IO('c',19)
  200 
  201 #define CDIOCRESUME     _IO('c',20)
  202 
  203 #define CDIOCRESET      _IO('c',21)
  204 
  205 #define CDIOCSTART      _IO('c',22)
  206 
  207 #define CDIOCSTOP       _IO('c',23)
  208 
  209 #define CDIOCEJECT      _IO('c',24)
  210 
  211 
  212 struct ioc_play_msf
  213 {
  214         u_char  start_m;
  215         u_char  start_s;
  216         u_char  start_f;
  217         u_char  end_m;
  218         u_char  end_s;
  219         u_char  end_f;
  220 };
  221 #define CDIOCPLAYMSF    _IOW('c',25,struct ioc_play_msf)
  222 
  223 #define CDIOCALLOW      _IO('c',26)
  224 
  225 #define CDIOCPREVENT    _IO('c',27)
  226 
  227                                 /*<1>For drives that support it, this*/
  228                                 /*<1>causes the drive to close its door*/
  229                                 /*<1>and make the media (if any) ready*/
  230 #define CDIOCCLOSE      _IO('c',28)     /*<1>*/
  231 
  232 
  233 struct  ioc_pitch               /*<1>For drives that support it, this*/
  234 {                               /*<1>call instructs the drive to play the*/
  235         short   speed;          /*<1>audio at a faster or slower-than-normal*/
  236 };                              /*<1>rate. -32767 to -1 is slower, 0==normal,*/
  237                                 /*<1>and 1 to 32767 is faster.  LSB bits are*/
  238                                 /*<1>discarded first by drives with less res.*/
  239 #define CDIOCPITCH      _IOW('c',29,struct ioc_pitch)   /*<1>*/
  240 
  241 struct ioc_capability {                 /*<2>*/
  242         u_long  play_function;          /*<2>*/
  243 #define CDDOPLAYTRK     0x00000001      /*<2>Can Play tracks/index*/
  244 #define CDDOPLAYMSF     0x00000002      /*<2>Can Play msf to msf*/
  245 #define CDDOPLAYBLOCKS  0x00000004      /*<2>Can Play range of blocks*/
  246 #define CDDOPAUSE       0x00000100      /*<2>Output can be paused*/
  247 #define CDDORESUME      0x00000200      /*<2>Output can be resumed*/
  248 #define CDDORESET       0x00000400      /*<2>Drive can be completely reset*/
  249 #define CDDOSTART       0x00000800      /*<2>Audio can be started*/
  250 #define CDDOSTOP        0x00001000      /*<2>Audio can be stopped*/
  251 #define CDDOPITCH       0x00002000      /*<2>Audio pitch */
  252 
  253         u_long  routing_function;       /*<2>*/
  254 #define CDREADVOLUME    0x00000001      /*<2>Volume settings can be read*/
  255 #define CDSETVOLUME     0x00000002      /*<2>Volume settings can be set*/
  256 #define CDSETMONO       0x00000100      /*<2>Output can be set to mono*/
  257 #define CDSETSTEREO     0x00000200      /*<2>Output can be set to stereo (def)*/
  258 #define CDSETLEFT       0x00000400      /*<2>Output can be set to left only*/
  259 #define CDSETRIGHT      0x00000800      /*<2>Output can be set to right only*/
  260 #define CDSETMUTE       0x00001000      /*<2>Output can be muted*/
  261 #define CDSETPATCH      0x00008000      /*<2>Direct routing control allowed*/
  262 
  263         u_long  special_function;       /*<2>*/
  264 #define CDDOEJECT       0x00000001      /*<2>The tray can be opened*/
  265 #define CDDOCLOSE       0x00000002      /*<2>The tray can be closed*/
  266 #define CDDOLOCK        0x00000004      /*<2>The tray can be locked*/
  267 #define CDREADHEADER    0x00000100      /*<2>Can read Table of Contents*/
  268 #define CDREADENTRIES   0x00000200      /*<2>Can read TOC Entries*/
  269 #define CDREADSUBQ      0x00000200      /*<2>Can read Subchannel info*/
  270 #define CDREADRW        0x00000400      /*<2>Can read subcodes R-W*/
  271 #define CDHASDEBUG      0x00004000      /*<2>The tray has dynamic debugging*/
  272 };                                      /*<2>*/
  273 
  274 #define CDIOCCAPABILITY _IOR('c',30,struct ioc_capability)      /*<2>*/
  275 
  276 struct ioc_read_audio
  277 {
  278         u_char address_format;
  279         union msf_lba address;
  280         int nframes;
  281         u_char* buffer;
  282 };
  283 
  284 #define CDIOCREADAUDIO _IOWR('c',31,struct ioc_read_audio)
  285 
  286 #endif /* !_SYS_CDIO_H_ */

Cache object: b1327eb3a5bbce2a46dd38c039b1fe72


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.