~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/userspace-api/ioctl/cdrom.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/userspace-api/ioctl/cdrom.rst (Version linux-6.12-rc7) and /Documentation/userspace-api/ioctl/cdrom.rst (Version linux-6.0.19)


  1 ============================                        1 ============================
  2 Summary of CDROM ioctl calls                        2 Summary of CDROM ioctl calls
  3 ============================                        3 ============================
  4                                                     4 
  5 - Edward A. Falk <efalk@google.com>                  5 - Edward A. Falk <efalk@google.com>
  6                                                     6 
  7 November, 2004                                      7 November, 2004
  8                                                     8 
  9 This document attempts to describe the ioctl(2      9 This document attempts to describe the ioctl(2) calls supported by
 10 the CDROM layer.  These are by-and-large imple     10 the CDROM layer.  These are by-and-large implemented (as of Linux 2.6)
 11 in drivers/cdrom/cdrom.c and drivers/block/scs     11 in drivers/cdrom/cdrom.c and drivers/block/scsi_ioctl.c
 12                                                    12 
 13 ioctl values are listed in <linux/cdrom.h>.  A     13 ioctl values are listed in <linux/cdrom.h>.  As of this writing, they
 14 are as follows:                                    14 are as follows:
 15                                                    15 
 16         ========================  ============     16         ========================  ===============================================
 17         CDROMPAUSE                Pause Audio      17         CDROMPAUSE                Pause Audio Operation
 18         CDROMRESUME               Resume pause     18         CDROMRESUME               Resume paused Audio Operation
 19         CDROMPLAYMSF              Play Audio M     19         CDROMPLAYMSF              Play Audio MSF (struct cdrom_msf)
 20         CDROMPLAYTRKIND           Play Audio T     20         CDROMPLAYTRKIND           Play Audio Track/index (struct cdrom_ti)
 21         CDROMREADTOCHDR           Read TOC hea     21         CDROMREADTOCHDR           Read TOC header (struct cdrom_tochdr)
 22         CDROMREADTOCENTRY         Read TOC ent     22         CDROMREADTOCENTRY         Read TOC entry (struct cdrom_tocentry)
 23         CDROMSTOP                 Stop the cdr     23         CDROMSTOP                 Stop the cdrom drive
 24         CDROMSTART                Start the cd     24         CDROMSTART                Start the cdrom drive
 25         CDROMEJECT                Ejects the c     25         CDROMEJECT                Ejects the cdrom media
 26         CDROMVOLCTRL              Control outp     26         CDROMVOLCTRL              Control output volume (struct cdrom_volctrl)
 27         CDROMSUBCHNL              Read subchan     27         CDROMSUBCHNL              Read subchannel data (struct cdrom_subchnl)
 28         CDROMREADMODE2            Read CDROM m     28         CDROMREADMODE2            Read CDROM mode 2 data (2336 Bytes)
 29                                   (struct cdro     29                                   (struct cdrom_read)
 30         CDROMREADMODE1            Read CDROM m     30         CDROMREADMODE1            Read CDROM mode 1 data (2048 Bytes)
 31                                   (struct cdro     31                                   (struct cdrom_read)
 32         CDROMREADAUDIO            (struct cdro     32         CDROMREADAUDIO            (struct cdrom_read_audio)
 33         CDROMEJECT_SW             enable(1)/di     33         CDROMEJECT_SW             enable(1)/disable(0) auto-ejecting
 34         CDROMMULTISESSION         Obtain the s     34         CDROMMULTISESSION         Obtain the start-of-last-session
 35                                   address of m     35                                   address of multi session disks
 36                                   (struct cdro     36                                   (struct cdrom_multisession)
 37         CDROM_GET_MCN             Obtain the "     37         CDROM_GET_MCN             Obtain the "Universal Product Code"
 38                                   if available     38                                   if available (struct cdrom_mcn)
 39         CDROM_GET_UPC             Deprecated,      39         CDROM_GET_UPC             Deprecated, use CDROM_GET_MCN instead.
 40         CDROMRESET                hard-reset t     40         CDROMRESET                hard-reset the drive
 41         CDROMVOLREAD              Get the driv     41         CDROMVOLREAD              Get the drive's volume setting
 42                                   (struct cdro     42                                   (struct cdrom_volctrl)
 43         CDROMREADRAW              read data in     43         CDROMREADRAW              read data in raw mode (2352 Bytes)
 44                                   (struct cdro     44                                   (struct cdrom_read)
 45         CDROMREADCOOKED           read data in     45         CDROMREADCOOKED           read data in cooked mode
 46         CDROMSEEK                 seek msf add     46         CDROMSEEK                 seek msf address
 47         CDROMPLAYBLK              scsi-cd only     47         CDROMPLAYBLK              scsi-cd only, (struct cdrom_blk)
 48         CDROMREADALL              read all 264     48         CDROMREADALL              read all 2646 bytes
 49         CDROMGETSPINDOWN          return 4-bit     49         CDROMGETSPINDOWN          return 4-bit spindown value
 50         CDROMSETSPINDOWN          set 4-bit sp     50         CDROMSETSPINDOWN          set 4-bit spindown value
 51         CDROMCLOSETRAY            pendant of C     51         CDROMCLOSETRAY            pendant of CDROMEJECT
 52         CDROM_SET_OPTIONS         Set behavior     52         CDROM_SET_OPTIONS         Set behavior options
 53         CDROM_CLEAR_OPTIONS       Clear behavi     53         CDROM_CLEAR_OPTIONS       Clear behavior options
 54         CDROM_SELECT_SPEED        Set the CD-R     54         CDROM_SELECT_SPEED        Set the CD-ROM speed
 55         CDROM_SELECT_DISC         Select disc      55         CDROM_SELECT_DISC         Select disc (for juke-boxes)
 56         CDROM_MEDIA_CHANGED       Check is med     56         CDROM_MEDIA_CHANGED       Check is media changed
 57         CDROM_TIMED_MEDIA_CHANGE  Check if med     57         CDROM_TIMED_MEDIA_CHANGE  Check if media changed
 58                                   since given      58                                   since given time
 59                                   (struct cdro     59                                   (struct cdrom_timed_media_change_info)
 60         CDROM_DRIVE_STATUS        Get tray pos     60         CDROM_DRIVE_STATUS        Get tray position, etc.
 61         CDROM_DISC_STATUS         Get disc typ     61         CDROM_DISC_STATUS         Get disc type, etc.
 62         CDROM_CHANGER_NSLOTS      Get number o     62         CDROM_CHANGER_NSLOTS      Get number of slots
 63         CDROM_LOCKDOOR            lock or unlo     63         CDROM_LOCKDOOR            lock or unlock door
 64         CDROM_DEBUG               Turn debug m     64         CDROM_DEBUG               Turn debug messages on/off
 65         CDROM_GET_CAPABILITY      get capabili     65         CDROM_GET_CAPABILITY      get capabilities
 66         CDROMAUDIOBUFSIZ          set the audi     66         CDROMAUDIOBUFSIZ          set the audio buffer size
 67         DVD_READ_STRUCT           Read structu     67         DVD_READ_STRUCT           Read structure
 68         DVD_WRITE_STRUCT          Write struct     68         DVD_WRITE_STRUCT          Write structure
 69         DVD_AUTH                  Authenticati     69         DVD_AUTH                  Authentication
 70         CDROM_SEND_PACKET         send a packe     70         CDROM_SEND_PACKET         send a packet to the drive
 71         CDROM_NEXT_WRITABLE       get next wri     71         CDROM_NEXT_WRITABLE       get next writable block
 72         CDROM_LAST_WRITTEN        get last blo     72         CDROM_LAST_WRITTEN        get last block written on disc
 73         ========================  ============     73         ========================  ===============================================
 74                                                    74 
 75                                                    75 
 76 The information that follows was determined fr     76 The information that follows was determined from reading kernel source
 77 code.  It is likely that some corrections will     77 code.  It is likely that some corrections will be made over time.
 78                                                    78 
 79 ----------------------------------------------     79 ------------------------------------------------------------------------------
 80                                                    80 
 81 General:                                           81 General:
 82                                                    82 
 83         Unless otherwise specified, all ioctl      83         Unless otherwise specified, all ioctl calls return 0 on success
 84         and -1 with errno set to an appropriat     84         and -1 with errno set to an appropriate value on error.  (Some
 85         ioctls return non-negative data values     85         ioctls return non-negative data values.)
 86                                                    86 
 87         Unless otherwise specified, all ioctl      87         Unless otherwise specified, all ioctl calls return -1 and set
 88         errno to EFAULT on a failed attempt to     88         errno to EFAULT on a failed attempt to copy data to or from user
 89         address space.                             89         address space.
 90                                                    90 
 91         Individual drivers may return error co     91         Individual drivers may return error codes not listed here.
 92                                                    92 
 93         Unless otherwise specified, all data s     93         Unless otherwise specified, all data structures and constants
 94         are defined in <linux/cdrom.h>             94         are defined in <linux/cdrom.h>
 95                                                    95 
 96 ----------------------------------------------     96 ------------------------------------------------------------------------------
 97                                                    97 
 98                                                    98 
 99 CDROMPAUSE                                         99 CDROMPAUSE
100         Pause Audio Operation                     100         Pause Audio Operation
101                                                   101 
102                                                   102 
103         usage::                                   103         usage::
104                                                   104 
105           ioctl(fd, CDROMPAUSE, 0);               105           ioctl(fd, CDROMPAUSE, 0);
106                                                   106 
107                                                   107 
108         inputs:                                   108         inputs:
109                 none                              109                 none
110                                                   110 
111                                                   111 
112         outputs:                                  112         outputs:
113                 none                              113                 none
114                                                   114 
115                                                   115 
116         error return:                             116         error return:
117           - ENOSYS      cd drive not audio-cap    117           - ENOSYS      cd drive not audio-capable.
118                                                   118 
119                                                   119 
120 CDROMRESUME                                       120 CDROMRESUME
121         Resume paused Audio Operation             121         Resume paused Audio Operation
122                                                   122 
123                                                   123 
124         usage::                                   124         usage::
125                                                   125 
126           ioctl(fd, CDROMRESUME, 0);              126           ioctl(fd, CDROMRESUME, 0);
127                                                   127 
128                                                   128 
129         inputs:                                   129         inputs:
130                 none                              130                 none
131                                                   131 
132                                                   132 
133         outputs:                                  133         outputs:
134                 none                              134                 none
135                                                   135 
136                                                   136 
137         error return:                             137         error return:
138           - ENOSYS      cd drive not audio-cap    138           - ENOSYS      cd drive not audio-capable.
139                                                   139 
140                                                   140 
141 CDROMPLAYMSF                                      141 CDROMPLAYMSF
142         Play Audio MSF                            142         Play Audio MSF
143                                                   143 
144         (struct cdrom_msf)                        144         (struct cdrom_msf)
145                                                   145 
146                                                   146 
147         usage::                                   147         usage::
148                                                   148 
149           struct cdrom_msf msf;                   149           struct cdrom_msf msf;
150                                                   150 
151           ioctl(fd, CDROMPLAYMSF, &msf);          151           ioctl(fd, CDROMPLAYMSF, &msf);
152                                                   152 
153         inputs:                                   153         inputs:
154                 cdrom_msf structure, describin    154                 cdrom_msf structure, describing a segment of music to play
155                                                   155 
156                                                   156 
157         outputs:                                  157         outputs:
158                 none                              158                 none
159                                                   159 
160                                                   160 
161         error return:                             161         error return:
162           - ENOSYS      cd drive not audio-cap    162           - ENOSYS      cd drive not audio-capable.
163                                                   163 
164         notes:                                    164         notes:
165                 - MSF stands for minutes-secon    165                 - MSF stands for minutes-seconds-frames
166                 - LBA stands for logical block    166                 - LBA stands for logical block address
167                 - Segment is described as star    167                 - Segment is described as start and end times, where each time
168                   is described as minutes:seco    168                   is described as minutes:seconds:frames.
169                   A frame is 1/75 of a second.    169                   A frame is 1/75 of a second.
170                                                   170 
171                                                   171 
172 CDROMPLAYTRKIND                                   172 CDROMPLAYTRKIND
173         Play Audio Track/index                    173         Play Audio Track/index
174                                                   174 
175         (struct cdrom_ti)                         175         (struct cdrom_ti)
176                                                   176 
177                                                   177 
178         usage::                                   178         usage::
179                                                   179 
180           struct cdrom_ti ti;                     180           struct cdrom_ti ti;
181                                                   181 
182           ioctl(fd, CDROMPLAYTRKIND, &ti);        182           ioctl(fd, CDROMPLAYTRKIND, &ti);
183                                                   183 
184         inputs:                                   184         inputs:
185                 cdrom_ti structure, describing    185                 cdrom_ti structure, describing a segment of music to play
186                                                   186 
187                                                   187 
188         outputs:                                  188         outputs:
189                 none                              189                 none
190                                                   190 
191                                                   191 
192         error return:                             192         error return:
193           - ENOSYS      cd drive not audio-cap    193           - ENOSYS      cd drive not audio-capable.
194                                                   194 
195         notes:                                    195         notes:
196                 - Segment is described as star    196                 - Segment is described as start and end times, where each time
197                   is described as a track and     197                   is described as a track and an index.
198                                                   198 
199                                                   199 
200                                                   200 
201 CDROMREADTOCHDR                                   201 CDROMREADTOCHDR
202         Read TOC header                           202         Read TOC header
203                                                   203 
204         (struct cdrom_tochdr)                     204         (struct cdrom_tochdr)
205                                                   205 
206                                                   206 
207         usage::                                   207         usage::
208                                                   208 
209           cdrom_tochdr header;                    209           cdrom_tochdr header;
210                                                   210 
211           ioctl(fd, CDROMREADTOCHDR, &header);    211           ioctl(fd, CDROMREADTOCHDR, &header);
212                                                   212 
213         inputs:                                   213         inputs:
214                 cdrom_tochdr structure            214                 cdrom_tochdr structure
215                                                   215 
216                                                   216 
217         outputs:                                  217         outputs:
218                 cdrom_tochdr structure            218                 cdrom_tochdr structure
219                                                   219 
220                                                   220 
221         error return:                             221         error return:
222           - ENOSYS      cd drive not audio-cap    222           - ENOSYS      cd drive not audio-capable.
223                                                   223 
224                                                   224 
225                                                   225 
226 CDROMREADTOCENTRY                                 226 CDROMREADTOCENTRY
227         Read TOC entry                            227         Read TOC entry
228                                                   228 
229         (struct cdrom_tocentry)                   229         (struct cdrom_tocentry)
230                                                   230 
231                                                   231 
232         usage::                                   232         usage::
233                                                   233 
234           struct cdrom_tocentry entry;            234           struct cdrom_tocentry entry;
235                                                   235 
236           ioctl(fd, CDROMREADTOCENTRY, &entry)    236           ioctl(fd, CDROMREADTOCENTRY, &entry);
237                                                   237 
238         inputs:                                   238         inputs:
239                 cdrom_tocentry structure          239                 cdrom_tocentry structure
240                                                   240 
241                                                   241 
242         outputs:                                  242         outputs:
243                 cdrom_tocentry structure          243                 cdrom_tocentry structure
244                                                   244 
245                                                   245 
246         error return:                             246         error return:
247           - ENOSYS      cd drive not audio-cap    247           - ENOSYS      cd drive not audio-capable.
248           - EINVAL      entry.cdte_format not     248           - EINVAL      entry.cdte_format not CDROM_MSF or CDROM_LBA
249           - EINVAL      requested track out of    249           - EINVAL      requested track out of bounds
250           - EIO         I/O error reading TOC     250           - EIO         I/O error reading TOC
251                                                   251 
252         notes:                                    252         notes:
253                 - TOC stands for Table Of Cont    253                 - TOC stands for Table Of Contents
254                 - MSF stands for minutes-secon    254                 - MSF stands for minutes-seconds-frames
255                 - LBA stands for logical block    255                 - LBA stands for logical block address
256                                                   256 
257                                                   257 
258                                                   258 
259 CDROMSTOP                                         259 CDROMSTOP
260         Stop the cdrom drive                      260         Stop the cdrom drive
261                                                   261 
262                                                   262 
263         usage::                                   263         usage::
264                                                   264 
265           ioctl(fd, CDROMSTOP, 0);                265           ioctl(fd, CDROMSTOP, 0);
266                                                   266 
267                                                   267 
268         inputs:                                   268         inputs:
269                 none                              269                 none
270                                                   270 
271                                                   271 
272         outputs:                                  272         outputs:
273                 none                              273                 none
274                                                   274 
275                                                   275 
276         error return:                             276         error return:
277           - ENOSYS      cd drive not audio-cap    277           - ENOSYS      cd drive not audio-capable.
278                                                   278 
279         notes:                                    279         notes:
280           - Exact interpretation of this ioctl    280           - Exact interpretation of this ioctl depends on the device,
281             but most seem to spin the drive do    281             but most seem to spin the drive down.
282                                                   282 
283                                                   283 
284 CDROMSTART                                        284 CDROMSTART
285         Start the cdrom drive                     285         Start the cdrom drive
286                                                   286 
287                                                   287 
288         usage::                                   288         usage::
289                                                   289 
290           ioctl(fd, CDROMSTART, 0);               290           ioctl(fd, CDROMSTART, 0);
291                                                   291 
292                                                   292 
293         inputs:                                   293         inputs:
294                 none                              294                 none
295                                                   295 
296                                                   296 
297         outputs:                                  297         outputs:
298                 none                              298                 none
299                                                   299 
300                                                   300 
301         error return:                             301         error return:
302           - ENOSYS      cd drive not audio-cap    302           - ENOSYS      cd drive not audio-capable.
303                                                   303 
304         notes:                                    304         notes:
305           - Exact interpretation of this ioctl    305           - Exact interpretation of this ioctl depends on the device,
306             but most seem to spin the drive up    306             but most seem to spin the drive up and/or close the tray.
307             Other devices ignore the ioctl com    307             Other devices ignore the ioctl completely.
308                                                   308 
309                                                   309 
310 CDROMEJECT                                        310 CDROMEJECT
311         - Ejects the cdrom media                  311         - Ejects the cdrom media
312                                                   312 
313                                                   313 
314         usage::                                   314         usage::
315                                                   315 
316           ioctl(fd, CDROMEJECT, 0);               316           ioctl(fd, CDROMEJECT, 0);
317                                                   317 
318                                                   318 
319         inputs:                                   319         inputs:
320                 none                              320                 none
321                                                   321 
322                                                   322 
323         outputs:                                  323         outputs:
324                 none                              324                 none
325                                                   325 
326                                                   326 
327         error returns:                            327         error returns:
328           - ENOSYS      cd drive not capable o    328           - ENOSYS      cd drive not capable of ejecting
329           - EBUSY       other processes are ac    329           - EBUSY       other processes are accessing drive, or door is locked
330                                                   330 
331         notes:                                    331         notes:
332                 - See CDROM_LOCKDOOR, below.      332                 - See CDROM_LOCKDOOR, below.
333                                                   333 
334                                                   334 
335                                                   335 
336                                                   336 
337 CDROMCLOSETRAY                                    337 CDROMCLOSETRAY
338         pendant of CDROMEJECT                     338         pendant of CDROMEJECT
339                                                   339 
340                                                   340 
341         usage::                                   341         usage::
342                                                   342 
343           ioctl(fd, CDROMCLOSETRAY, 0);           343           ioctl(fd, CDROMCLOSETRAY, 0);
344                                                   344 
345                                                   345 
346         inputs:                                   346         inputs:
347                 none                              347                 none
348                                                   348 
349                                                   349 
350         outputs:                                  350         outputs:
351                 none                              351                 none
352                                                   352 
353                                                   353 
354         error returns:                            354         error returns:
355           - ENOSYS      cd drive not capable o    355           - ENOSYS      cd drive not capable of closing the tray
356           - EBUSY       other processes are ac    356           - EBUSY       other processes are accessing drive, or door is locked
357                                                   357 
358         notes:                                    358         notes:
359                 - See CDROM_LOCKDOOR, below.      359                 - See CDROM_LOCKDOOR, below.
360                                                   360 
361                                                   361 
362                                                   362 
363                                                   363 
364 CDROMVOLCTRL                                      364 CDROMVOLCTRL
365         Control output volume (struct cdrom_vo    365         Control output volume (struct cdrom_volctrl)
366                                                   366 
367                                                   367 
368         usage::                                   368         usage::
369                                                   369 
370           struct cdrom_volctrl volume;            370           struct cdrom_volctrl volume;
371                                                   371 
372           ioctl(fd, CDROMVOLCTRL, &volume);       372           ioctl(fd, CDROMVOLCTRL, &volume);
373                                                   373 
374         inputs:                                   374         inputs:
375                 cdrom_volctrl structure contai    375                 cdrom_volctrl structure containing volumes for up to 4
376                 channels.                         376                 channels.
377                                                   377 
378         outputs:                                  378         outputs:
379                 none                              379                 none
380                                                   380 
381                                                   381 
382         error return:                             382         error return:
383           - ENOSYS      cd drive not audio-cap    383           - ENOSYS      cd drive not audio-capable.
384                                                   384 
385                                                   385 
386                                                   386 
387 CDROMVOLREAD                                      387 CDROMVOLREAD
388         Get the drive's volume setting            388         Get the drive's volume setting
389                                                   389 
390         (struct cdrom_volctrl)                    390         (struct cdrom_volctrl)
391                                                   391 
392                                                   392 
393         usage::                                   393         usage::
394                                                   394 
395           struct cdrom_volctrl volume;            395           struct cdrom_volctrl volume;
396                                                   396 
397           ioctl(fd, CDROMVOLREAD, &volume);       397           ioctl(fd, CDROMVOLREAD, &volume);
398                                                   398 
399         inputs:                                   399         inputs:
400                 none                              400                 none
401                                                   401 
402                                                   402 
403         outputs:                                  403         outputs:
404                 The current volume settings.      404                 The current volume settings.
405                                                   405 
406                                                   406 
407         error return:                             407         error return:
408           - ENOSYS      cd drive not audio-cap    408           - ENOSYS      cd drive not audio-capable.
409                                                   409 
410                                                   410 
411                                                   411 
412 CDROMSUBCHNL                                      412 CDROMSUBCHNL
413         Read subchannel data                      413         Read subchannel data
414                                                   414 
415         (struct cdrom_subchnl)                    415         (struct cdrom_subchnl)
416                                                   416 
417                                                   417 
418         usage::                                   418         usage::
419                                                   419 
420           struct cdrom_subchnl q;                 420           struct cdrom_subchnl q;
421                                                   421 
422           ioctl(fd, CDROMSUBCHNL, &q);            422           ioctl(fd, CDROMSUBCHNL, &q);
423                                                   423 
424         inputs:                                   424         inputs:
425                 cdrom_subchnl structure           425                 cdrom_subchnl structure
426                                                   426 
427                                                   427 
428         outputs:                                  428         outputs:
429                 cdrom_subchnl structure           429                 cdrom_subchnl structure
430                                                   430 
431                                                   431 
432         error return:                             432         error return:
433           - ENOSYS      cd drive not audio-cap    433           - ENOSYS      cd drive not audio-capable.
434           - EINVAL      format not CDROM_MSF o    434           - EINVAL      format not CDROM_MSF or CDROM_LBA
435                                                   435 
436         notes:                                    436         notes:
437                 - Format is converted to CDROM    437                 - Format is converted to CDROM_MSF or CDROM_LBA
438                   as per user request on retur    438                   as per user request on return
439                                                   439 
440                                                   440 
441                                                   441 
442 CDROMREADRAW                                      442 CDROMREADRAW
443         read data in raw mode (2352 Bytes)        443         read data in raw mode (2352 Bytes)
444                                                   444 
445         (struct cdrom_read)                       445         (struct cdrom_read)
446                                                   446 
447         usage::                                   447         usage::
448                                                   448 
449           union {                                 449           union {
450                                                   450 
451             struct cdrom_msf msf;                 451             struct cdrom_msf msf;               /* input */
452             char buffer[CD_FRAMESIZE_RAW];        452             char buffer[CD_FRAMESIZE_RAW];      /* return */
453           } arg;                                  453           } arg;
454           ioctl(fd, CDROMREADRAW, &arg);          454           ioctl(fd, CDROMREADRAW, &arg);
455                                                   455 
456         inputs:                                   456         inputs:
457                 cdrom_msf structure indicating    457                 cdrom_msf structure indicating an address to read.
458                                                   458 
459                 Only the start values are sign    459                 Only the start values are significant.
460                                                   460 
461         outputs:                                  461         outputs:
462                 Data written to address provid    462                 Data written to address provided by user.
463                                                   463 
464                                                   464 
465         error return:                             465         error return:
466           - EINVAL      address less than 0, o    466           - EINVAL      address less than 0, or msf less than 0:2:0
467           - ENOMEM      out of memory             467           - ENOMEM      out of memory
468                                                   468 
469         notes:                                    469         notes:
470                 - As of 2.6.8.1, comments in <    470                 - As of 2.6.8.1, comments in <linux/cdrom.h> indicate that this
471                   ioctl accepts a cdrom_read s    471                   ioctl accepts a cdrom_read structure, but actual source code
472                   reads a cdrom_msf structure     472                   reads a cdrom_msf structure and writes a buffer of data to
473                   the same address.               473                   the same address.
474                                                   474 
475                 - MSF values are converted to     475                 - MSF values are converted to LBA values via this formula::
476                                                   476 
477                     lba = (((m * CD_SECS) + s)    477                     lba = (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET;
478                                                   478 
479                                                   479 
480                                                   480 
481                                                   481 
482 CDROMREADMODE1                                    482 CDROMREADMODE1
483         Read CDROM mode 1 data (2048 Bytes)       483         Read CDROM mode 1 data (2048 Bytes)
484                                                   484 
485         (struct cdrom_read)                       485         (struct cdrom_read)
486                                                   486 
487         notes:                                    487         notes:
488                 Identical to CDROMREADRAW exce    488                 Identical to CDROMREADRAW except that block size is
489                 CD_FRAMESIZE (2048) bytes         489                 CD_FRAMESIZE (2048) bytes
490                                                   490 
491                                                   491 
492                                                   492 
493 CDROMREADMODE2                                    493 CDROMREADMODE2
494         Read CDROM mode 2 data (2336 Bytes)       494         Read CDROM mode 2 data (2336 Bytes)
495                                                   495 
496         (struct cdrom_read)                       496         (struct cdrom_read)
497                                                   497 
498         notes:                                    498         notes:
499                 Identical to CDROMREADRAW exce    499                 Identical to CDROMREADRAW except that block size is
500                 CD_FRAMESIZE_RAW0 (2336) bytes    500                 CD_FRAMESIZE_RAW0 (2336) bytes
501                                                   501 
502                                                   502 
503                                                   503 
504 CDROMREADAUDIO                                    504 CDROMREADAUDIO
505         (struct cdrom_read_audio)                 505         (struct cdrom_read_audio)
506                                                   506 
507         usage::                                   507         usage::
508                                                   508 
509           struct cdrom_read_audio ra;             509           struct cdrom_read_audio ra;
510                                                   510 
511           ioctl(fd, CDROMREADAUDIO, &ra);         511           ioctl(fd, CDROMREADAUDIO, &ra);
512                                                   512 
513         inputs:                                   513         inputs:
514                 cdrom_read_audio structure con    514                 cdrom_read_audio structure containing read start
515                 point and length                  515                 point and length
516                                                   516 
517         outputs:                                  517         outputs:
518                 audio data, returned to buffer    518                 audio data, returned to buffer indicated by ra
519                                                   519 
520                                                   520 
521         error return:                             521         error return:
522           - EINVAL      format not CDROM_MSF o    522           - EINVAL      format not CDROM_MSF or CDROM_LBA
523           - EINVAL      nframes not in range [    523           - EINVAL      nframes not in range [1 75]
524           - ENXIO       drive has no queue (pr    524           - ENXIO       drive has no queue (probably means invalid fd)
525           - ENOMEM      out of memory             525           - ENOMEM      out of memory
526                                                   526 
527                                                   527 
528 CDROMEJECT_SW                                     528 CDROMEJECT_SW
529         enable(1)/disable(0) auto-ejecting        529         enable(1)/disable(0) auto-ejecting
530                                                   530 
531                                                   531 
532         usage::                                   532         usage::
533                                                   533 
534           int val;                                534           int val;
535                                                   535 
536           ioctl(fd, CDROMEJECT_SW, val);          536           ioctl(fd, CDROMEJECT_SW, val);
537                                                   537 
538         inputs:                                   538         inputs:
539                 Flag specifying auto-eject fla    539                 Flag specifying auto-eject flag.
540                                                   540 
541                                                   541 
542         outputs:                                  542         outputs:
543                 none                              543                 none
544                                                   544 
545                                                   545 
546         error return:                             546         error return:
547           - ENOSYS      Drive is not capable o    547           - ENOSYS      Drive is not capable of ejecting.
548           - EBUSY       Door is locked            548           - EBUSY       Door is locked
549                                                   549 
550                                                   550 
551                                                   551 
552                                                   552 
553 CDROMMULTISESSION                                 553 CDROMMULTISESSION
554         Obtain the start-of-last-session addre    554         Obtain the start-of-last-session address of multi session disks
555                                                   555 
556         (struct cdrom_multisession)               556         (struct cdrom_multisession)
557                                                   557 
558         usage::                                   558         usage::
559                                                   559 
560           struct cdrom_multisession ms_info;      560           struct cdrom_multisession ms_info;
561                                                   561 
562           ioctl(fd, CDROMMULTISESSION, &ms_inf    562           ioctl(fd, CDROMMULTISESSION, &ms_info);
563                                                   563 
564         inputs:                                   564         inputs:
565                 cdrom_multisession structure c    565                 cdrom_multisession structure containing desired
566                                                   566 
567           format.                                 567           format.
568                                                   568 
569         outputs:                                  569         outputs:
570                 cdrom_multisession structure i    570                 cdrom_multisession structure is filled with last_session
571                 information.                      571                 information.
572                                                   572 
573         error return:                             573         error return:
574           - EINVAL      format not CDROM_MSF o    574           - EINVAL      format not CDROM_MSF or CDROM_LBA
575                                                   575 
576                                                   576 
577 CDROM_GET_MCN                                     577 CDROM_GET_MCN
578         Obtain the "Universal Product Code"       578         Obtain the "Universal Product Code"
579         if available                              579         if available
580                                                   580 
581         (struct cdrom_mcn)                        581         (struct cdrom_mcn)
582                                                   582 
583                                                   583 
584         usage::                                   584         usage::
585                                                   585 
586           struct cdrom_mcn mcn;                   586           struct cdrom_mcn mcn;
587                                                   587 
588           ioctl(fd, CDROM_GET_MCN, &mcn);         588           ioctl(fd, CDROM_GET_MCN, &mcn);
589                                                   589 
590         inputs:                                   590         inputs:
591                 none                              591                 none
592                                                   592 
593                                                   593 
594         outputs:                                  594         outputs:
595                 Universal Product Code            595                 Universal Product Code
596                                                   596 
597                                                   597 
598         error return:                             598         error return:
599           - ENOSYS      Drive is not capable o    599           - ENOSYS      Drive is not capable of reading MCN data.
600                                                   600 
601         notes:                                    601         notes:
602                 - Source code comments state::    602                 - Source code comments state::
603                                                   603 
604                     The following function is     604                     The following function is implemented, although very few
605                     audio discs give Universal    605                     audio discs give Universal Product Code information, which
606                     should just be the Medium     606                     should just be the Medium Catalog Number on the box.  Note,
607                     that the way the code is w    607                     that the way the code is written on the CD is /not/ uniform
608                     across all discs!             608                     across all discs!
609                                                   609 
610                                                   610 
611                                                   611 
612                                                   612 
613 CDROM_GET_UPC                                     613 CDROM_GET_UPC
614         CDROM_GET_MCN  (deprecated)               614         CDROM_GET_MCN  (deprecated)
615                                                   615 
616                                                   616 
617         Not implemented, as of 2.6.8.1            617         Not implemented, as of 2.6.8.1
618                                                   618 
619                                                   619 
620                                                   620 
621 CDROMRESET                                        621 CDROMRESET
622         hard-reset the drive                      622         hard-reset the drive
623                                                   623 
624                                                   624 
625         usage::                                   625         usage::
626                                                   626 
627           ioctl(fd, CDROMRESET, 0);               627           ioctl(fd, CDROMRESET, 0);
628                                                   628 
629                                                   629 
630         inputs:                                   630         inputs:
631                 none                              631                 none
632                                                   632 
633                                                   633 
634         outputs:                                  634         outputs:
635                 none                              635                 none
636                                                   636 
637                                                   637 
638         error return:                             638         error return:
639           - EACCES      Access denied:  requir    639           - EACCES      Access denied:  requires CAP_SYS_ADMIN
640           - ENOSYS      Drive is not capable o    640           - ENOSYS      Drive is not capable of resetting.
641                                                   641 
642                                                   642 
643                                                   643 
644                                                   644 
645 CDROMREADCOOKED                                   645 CDROMREADCOOKED
646         read data in cooked mode                  646         read data in cooked mode
647                                                   647 
648                                                   648 
649         usage::                                   649         usage::
650                                                   650 
651           u8 buffer[CD_FRAMESIZE]                 651           u8 buffer[CD_FRAMESIZE]
652                                                   652 
653           ioctl(fd, CDROMREADCOOKED, buffer);     653           ioctl(fd, CDROMREADCOOKED, buffer);
654                                                   654 
655         inputs:                                   655         inputs:
656                 none                              656                 none
657                                                   657 
658                                                   658 
659         outputs:                                  659         outputs:
660                 2048 bytes of data, "cooked" m    660                 2048 bytes of data, "cooked" mode.
661                                                   661 
662                                                   662 
663         notes:                                    663         notes:
664                 Not implemented on all drives.    664                 Not implemented on all drives.
665                                                   665 
666                                                   666 
667                                                   667 
668                                                   668 
669                                                   669 
670 CDROMREADALL                                      670 CDROMREADALL
671         read all 2646 bytes                       671         read all 2646 bytes
672                                                   672 
673                                                   673 
674         Same as CDROMREADCOOKED, but reads 264    674         Same as CDROMREADCOOKED, but reads 2646 bytes.
675                                                   675 
676                                                   676 
677                                                   677 
678 CDROMSEEK                                         678 CDROMSEEK
679         seek msf address                          679         seek msf address
680                                                   680 
681                                                   681 
682         usage::                                   682         usage::
683                                                   683 
684           struct cdrom_msf msf;                   684           struct cdrom_msf msf;
685                                                   685 
686           ioctl(fd, CDROMSEEK, &msf);             686           ioctl(fd, CDROMSEEK, &msf);
687                                                   687 
688         inputs:                                   688         inputs:
689                 MSF address to seek to.           689                 MSF address to seek to.
690                                                   690 
691                                                   691 
692         outputs:                                  692         outputs:
693                 none                              693                 none
694                                                   694 
695                                                   695 
696                                                   696 
697                                                   697 
698 CDROMPLAYBLK                                      698 CDROMPLAYBLK
699         scsi-cd only                              699         scsi-cd only
700                                                   700 
701         (struct cdrom_blk)                        701         (struct cdrom_blk)
702                                                   702 
703                                                   703 
704         usage::                                   704         usage::
705                                                   705 
706           struct cdrom_blk blk;                   706           struct cdrom_blk blk;
707                                                   707 
708           ioctl(fd, CDROMPLAYBLK, &blk);          708           ioctl(fd, CDROMPLAYBLK, &blk);
709                                                   709 
710         inputs:                                   710         inputs:
711                 Region to play                    711                 Region to play
712                                                   712 
713                                                   713 
714         outputs:                                  714         outputs:
715                 none                              715                 none
716                                                   716 
717                                                   717 
718                                                   718 
719                                                   719 
720 CDROMGETSPINDOWN                                  720 CDROMGETSPINDOWN
721         Obsolete, was ide-cd only                 721         Obsolete, was ide-cd only
722                                                   722 
723                                                   723 
724         usage::                                   724         usage::
725                                                   725 
726           char spindown;                          726           char spindown;
727                                                   727 
728           ioctl(fd, CDROMGETSPINDOWN, &spindow    728           ioctl(fd, CDROMGETSPINDOWN, &spindown);
729                                                   729 
730         inputs:                                   730         inputs:
731                 none                              731                 none
732                                                   732 
733                                                   733 
734         outputs:                                  734         outputs:
735                 The value of the current 4-bit    735                 The value of the current 4-bit spindown value.
736                                                   736 
737                                                   737 
738                                                   738 
739                                                   739 
740                                                   740 
741 CDROMSETSPINDOWN                                  741 CDROMSETSPINDOWN
742         Obsolete, was ide-cd only                 742         Obsolete, was ide-cd only
743                                                   743 
744                                                   744 
745         usage::                                   745         usage::
746                                                   746 
747           char spindown                           747           char spindown
748                                                   748 
749           ioctl(fd, CDROMSETSPINDOWN, &spindow    749           ioctl(fd, CDROMSETSPINDOWN, &spindown);
750                                                   750 
751         inputs:                                   751         inputs:
752                 4-bit value used to control sp    752                 4-bit value used to control spindown (TODO: more detail here)
753                                                   753 
754                                                   754 
755         outputs:                                  755         outputs:
756                 none                              756                 none
757                                                   757 
758                                                   758 
759                                                   759 
760                                                   760 
761                                                   761 
762                                                   762 
763 CDROM_SET_OPTIONS                                 763 CDROM_SET_OPTIONS
764         Set behavior options                      764         Set behavior options
765                                                   765 
766                                                   766 
767         usage::                                   767         usage::
768                                                   768 
769           int options;                            769           int options;
770                                                   770 
771           ioctl(fd, CDROM_SET_OPTIONS, options    771           ioctl(fd, CDROM_SET_OPTIONS, options);
772                                                   772 
773         inputs:                                   773         inputs:
774                 New values for drive options.     774                 New values for drive options.  The logical 'or' of:
775                                                   775 
776             ==============      ==============    776             ==============      ==================================
777             CDO_AUTO_CLOSE      close tray on     777             CDO_AUTO_CLOSE      close tray on first open(2)
778             CDO_AUTO_EJECT      open tray on l    778             CDO_AUTO_EJECT      open tray on last release
779             CDO_USE_FFLAGS      use O_NONBLOCK    779             CDO_USE_FFLAGS      use O_NONBLOCK information on open
780             CDO_LOCK            lock tray on o    780             CDO_LOCK            lock tray on open files
781             CDO_CHECK_TYPE      check type on     781             CDO_CHECK_TYPE      check type on open for data
782             ==============      ==============    782             ==============      ==================================
783                                                   783 
784         outputs:                                  784         outputs:
785                 Returns the resulting options     785                 Returns the resulting options settings in the
786                 ioctl return value.  Returns -    786                 ioctl return value.  Returns -1 on error.
787                                                   787 
788         error return:                             788         error return:
789           - ENOSYS      selected option(s) not    789           - ENOSYS      selected option(s) not supported by drive.
790                                                   790 
791                                                   791 
792                                                   792 
793                                                   793 
794 CDROM_CLEAR_OPTIONS                               794 CDROM_CLEAR_OPTIONS
795         Clear behavior options                    795         Clear behavior options
796                                                   796 
797                                                   797 
798         Same as CDROM_SET_OPTIONS, except that    798         Same as CDROM_SET_OPTIONS, except that selected options are
799         turned off.                               799         turned off.
800                                                   800 
801                                                   801 
802                                                   802 
803 CDROM_SELECT_SPEED                                803 CDROM_SELECT_SPEED
804         Set the CD-ROM speed                      804         Set the CD-ROM speed
805                                                   805 
806                                                   806 
807         usage::                                   807         usage::
808                                                   808 
809           int speed;                              809           int speed;
810                                                   810 
811           ioctl(fd, CDROM_SELECT_SPEED, speed)    811           ioctl(fd, CDROM_SELECT_SPEED, speed);
812                                                   812 
813         inputs:                                   813         inputs:
814                 New drive speed.                  814                 New drive speed.
815                                                   815 
816                                                   816 
817         outputs:                                  817         outputs:
818                 none                              818                 none
819                                                   819 
820                                                   820 
821         error return:                             821         error return:
822           - ENOSYS      speed selection not su    822           - ENOSYS      speed selection not supported by drive.
823                                                   823 
824                                                   824 
825                                                   825 
826 CDROM_SELECT_DISC                                 826 CDROM_SELECT_DISC
827         Select disc (for juke-boxes)              827         Select disc (for juke-boxes)
828                                                   828 
829                                                   829 
830         usage::                                   830         usage::
831                                                   831 
832           int disk;                               832           int disk;
833                                                   833 
834           ioctl(fd, CDROM_SELECT_DISC, disk);     834           ioctl(fd, CDROM_SELECT_DISC, disk);
835                                                   835 
836         inputs:                                   836         inputs:
837                 Disk to load into drive.          837                 Disk to load into drive.
838                                                   838 
839                                                   839 
840         outputs:                                  840         outputs:
841                 none                              841                 none
842                                                   842 
843                                                   843 
844         error return:                             844         error return:
845           - EINVAL      Disk number beyond cap    845           - EINVAL      Disk number beyond capacity of drive
846                                                   846 
847                                                   847 
848                                                   848 
849 CDROM_MEDIA_CHANGED                               849 CDROM_MEDIA_CHANGED
850         Check is media changed                    850         Check is media changed
851                                                   851 
852                                                   852 
853         usage::                                   853         usage::
854                                                   854 
855           int slot;                               855           int slot;
856                                                   856 
857           ioctl(fd, CDROM_MEDIA_CHANGED, slot)    857           ioctl(fd, CDROM_MEDIA_CHANGED, slot);
858                                                   858 
859         inputs:                                   859         inputs:
860                 Slot number to be tested, alwa    860                 Slot number to be tested, always zero except for jukeboxes.
861                                                   861 
862                 May also be special values CDS    862                 May also be special values CDSL_NONE or CDSL_CURRENT
863                                                   863 
864         outputs:                                  864         outputs:
865                 Ioctl return value is 0 or 1 d    865                 Ioctl return value is 0 or 1 depending on whether the media
866                                                   866 
867           has been changed, or -1 on error.       867           has been changed, or -1 on error.
868                                                   868 
869         error returns:                            869         error returns:
870           - ENOSYS      Drive can't detect med    870           - ENOSYS      Drive can't detect media change
871           - EINVAL      Slot number beyond cap    871           - EINVAL      Slot number beyond capacity of drive
872           - ENOMEM      Out of memory             872           - ENOMEM      Out of memory
873                                                   873 
874                                                   874 
875                                                   875 
876 CDROM_DRIVE_STATUS                                876 CDROM_DRIVE_STATUS
877         Get tray position, etc.                   877         Get tray position, etc.
878                                                   878 
879                                                   879 
880         usage::                                   880         usage::
881                                                   881 
882           int slot;                               882           int slot;
883                                                   883 
884           ioctl(fd, CDROM_DRIVE_STATUS, slot);    884           ioctl(fd, CDROM_DRIVE_STATUS, slot);
885                                                   885 
886         inputs:                                   886         inputs:
887                 Slot number to be tested, alwa    887                 Slot number to be tested, always zero except for jukeboxes.
888                                                   888 
889                 May also be special values CDS    889                 May also be special values CDSL_NONE or CDSL_CURRENT
890                                                   890 
891         outputs:                                  891         outputs:
892                 Ioctl return value will be one    892                 Ioctl return value will be one of the following values
893                                                   893 
894           from <linux/cdrom.h>:                   894           from <linux/cdrom.h>:
895                                                   895 
896             =================== ==============    896             =================== ==========================
897             CDS_NO_INFO         Information no    897             CDS_NO_INFO         Information not available.
898             CDS_NO_DISC                           898             CDS_NO_DISC
899             CDS_TRAY_OPEN                         899             CDS_TRAY_OPEN
900             CDS_DRIVE_NOT_READY                   900             CDS_DRIVE_NOT_READY
901             CDS_DISC_OK                           901             CDS_DISC_OK
902             -1                  error             902             -1                  error
903             =================== ==============    903             =================== ==========================
904                                                   904 
905         error returns:                            905         error returns:
906           - ENOSYS      Drive can't detect dri    906           - ENOSYS      Drive can't detect drive status
907           - EINVAL      Slot number beyond cap    907           - EINVAL      Slot number beyond capacity of drive
908           - ENOMEM      Out of memory             908           - ENOMEM      Out of memory
909                                                   909 
910                                                   910 
911                                                   911 
912                                                   912 
913 CDROM_DISC_STATUS                                 913 CDROM_DISC_STATUS
914         Get disc type, etc.                       914         Get disc type, etc.
915                                                   915 
916                                                   916 
917         usage::                                   917         usage::
918                                                   918 
919           ioctl(fd, CDROM_DISC_STATUS, 0);        919           ioctl(fd, CDROM_DISC_STATUS, 0);
920                                                   920 
921                                                   921 
922         inputs:                                   922         inputs:
923                 none                              923                 none
924                                                   924 
925                                                   925 
926         outputs:                                  926         outputs:
927                 Ioctl return value will be one    927                 Ioctl return value will be one of the following values
928                                                   928 
929           from <linux/cdrom.h>:                   929           from <linux/cdrom.h>:
930                                                   930 
931             - CDS_NO_INFO                         931             - CDS_NO_INFO
932             - CDS_AUDIO                           932             - CDS_AUDIO
933             - CDS_MIXED                           933             - CDS_MIXED
934             - CDS_XA_2_2                          934             - CDS_XA_2_2
935             - CDS_XA_2_1                          935             - CDS_XA_2_1
936             - CDS_DATA_1                          936             - CDS_DATA_1
937                                                   937 
938         error returns:                            938         error returns:
939                 none at present                   939                 none at present
940                                                   940 
941         notes:                                    941         notes:
942             - Source code comments state::        942             - Source code comments state::
943                                                   943 
944                                                   944 
945                 Ok, this is where problems sta    945                 Ok, this is where problems start.  The current interface for
946                 the CDROM_DISC_STATUS ioctl is    946                 the CDROM_DISC_STATUS ioctl is flawed.  It makes the false
947                 assumption that CDs are all CD    947                 assumption that CDs are all CDS_DATA_1 or all CDS_AUDIO, etc.
948                 Unfortunately, while this is o    948                 Unfortunately, while this is often the case, it is also
949                 very common for CDs to have so    949                 very common for CDs to have some tracks with data, and some
950                 tracks with audio.      Just b    950                 tracks with audio.      Just because I feel like it, I declare
951                 the following to be the best w    951                 the following to be the best way to cope.  If the CD has
952                 ANY data tracks on it, it will    952                 ANY data tracks on it, it will be returned as a data CD.
953                 If it has any XA tracks, I wil    953                 If it has any XA tracks, I will return it as that.      Now I
954                 could simplify this interface     954                 could simplify this interface by combining these returns with
955                 the above, but this more clear    955                 the above, but this more clearly demonstrates the problem
956                 with the current interface.  T    956                 with the current interface.  Too bad this wasn't designed
957                 to use bitmasks...                957                 to use bitmasks...             -Erik
958                                                   958 
959                 Well, now we have the option C    959                 Well, now we have the option CDS_MIXED: a mixed-type CD.
960                 User level programmers might f    960                 User level programmers might feel the ioctl is not very
961                 useful.                           961                 useful.
962                                 ---david          962                                 ---david
963                                                   963 
964                                                   964 
965                                                   965 
966                                                   966 
967 CDROM_CHANGER_NSLOTS                              967 CDROM_CHANGER_NSLOTS
968         Get number of slots                       968         Get number of slots
969                                                   969 
970                                                   970 
971         usage::                                   971         usage::
972                                                   972 
973           ioctl(fd, CDROM_CHANGER_NSLOTS, 0);     973           ioctl(fd, CDROM_CHANGER_NSLOTS, 0);
974                                                   974 
975                                                   975 
976         inputs:                                   976         inputs:
977                 none                              977                 none
978                                                   978 
979                                                   979 
980         outputs:                                  980         outputs:
981                 The ioctl return value will be    981                 The ioctl return value will be the number of slots in a
982                 CD changer.  Typically 1 for n    982                 CD changer.  Typically 1 for non-multi-disk devices.
983                                                   983 
984         error returns:                            984         error returns:
985                 none                              985                 none
986                                                   986 
987                                                   987 
988                                                   988 
989 CDROM_LOCKDOOR                                    989 CDROM_LOCKDOOR
990         lock or unlock door                       990         lock or unlock door
991                                                   991 
992                                                   992 
993         usage::                                   993         usage::
994                                                   994 
995           int lock;                               995           int lock;
996                                                   996 
997           ioctl(fd, CDROM_LOCKDOOR, lock);        997           ioctl(fd, CDROM_LOCKDOOR, lock);
998                                                   998 
999         inputs:                                   999         inputs:
1000                 Door lock flag, 1=lock, 0=unl    1000                 Door lock flag, 1=lock, 0=unlock
1001                                                  1001 
1002                                                  1002 
1003         outputs:                                 1003         outputs:
1004                 none                             1004                 none
1005                                                  1005 
1006                                                  1006 
1007         error returns:                           1007         error returns:
1008           - EDRIVE_CANT_DO_THIS                  1008           - EDRIVE_CANT_DO_THIS
1009                                                  1009 
1010                                 Door lock fun    1010                                 Door lock function not supported.
1011           - EBUSY                                1011           - EBUSY
1012                                                  1012 
1013                                 Attempt to un    1013                                 Attempt to unlock when multiple users
1014                                 have the driv    1014                                 have the drive open and not CAP_SYS_ADMIN
1015                                                  1015 
1016         notes:                                   1016         notes:
1017                 As of 2.6.8.1, the lock flag     1017                 As of 2.6.8.1, the lock flag is a global lock, meaning that
1018                 all CD drives will be locked     1018                 all CD drives will be locked or unlocked together.  This is
1019                 probably a bug.                  1019                 probably a bug.
1020                                                  1020 
1021                 The EDRIVE_CANT_DO_THIS value    1021                 The EDRIVE_CANT_DO_THIS value is defined in <linux/cdrom.h>
1022                 and is currently (2.6.8.1) th    1022                 and is currently (2.6.8.1) the same as EOPNOTSUPP
1023                                                  1023 
1024                                                  1024 
1025                                                  1025 
1026 CDROM_DEBUG                                      1026 CDROM_DEBUG
1027         Turn debug messages on/off               1027         Turn debug messages on/off
1028                                                  1028 
1029                                                  1029 
1030         usage::                                  1030         usage::
1031                                                  1031 
1032           int debug;                             1032           int debug;
1033                                                  1033 
1034           ioctl(fd, CDROM_DEBUG, debug);         1034           ioctl(fd, CDROM_DEBUG, debug);
1035                                                  1035 
1036         inputs:                                  1036         inputs:
1037                 Cdrom debug flag, 0=disable,     1037                 Cdrom debug flag, 0=disable, 1=enable
1038                                                  1038 
1039                                                  1039 
1040         outputs:                                 1040         outputs:
1041                 The ioctl return value will b    1041                 The ioctl return value will be the new debug flag.
1042                                                  1042 
1043                                                  1043 
1044         error return:                            1044         error return:
1045           - EACCES      Access denied:  requi    1045           - EACCES      Access denied:  requires CAP_SYS_ADMIN
1046                                                  1046 
1047                                                  1047 
1048                                                  1048 
1049 CDROM_GET_CAPABILITY                             1049 CDROM_GET_CAPABILITY
1050         get capabilities                         1050         get capabilities
1051                                                  1051 
1052                                                  1052 
1053         usage::                                  1053         usage::
1054                                                  1054 
1055           ioctl(fd, CDROM_GET_CAPABILITY, 0);    1055           ioctl(fd, CDROM_GET_CAPABILITY, 0);
1056                                                  1056 
1057                                                  1057 
1058         inputs:                                  1058         inputs:
1059                 none                             1059                 none
1060                                                  1060 
1061                                                  1061 
1062         outputs:                                 1062         outputs:
1063                 The ioctl return value is the    1063                 The ioctl return value is the current device capability
1064                 flags.  See CDC_CLOSE_TRAY, C    1064                 flags.  See CDC_CLOSE_TRAY, CDC_OPEN_TRAY, etc.
1065                                                  1065 
1066                                                  1066 
1067                                                  1067 
1068 CDROMAUDIOBUFSIZ                                 1068 CDROMAUDIOBUFSIZ
1069         set the audio buffer size                1069         set the audio buffer size
1070                                                  1070 
1071                                                  1071 
1072         usage::                                  1072         usage::
1073                                                  1073 
1074           int arg;                               1074           int arg;
1075                                                  1075 
1076           ioctl(fd, CDROMAUDIOBUFSIZ, val);      1076           ioctl(fd, CDROMAUDIOBUFSIZ, val);
1077                                                  1077 
1078         inputs:                                  1078         inputs:
1079                 New audio buffer size            1079                 New audio buffer size
1080                                                  1080 
1081                                                  1081 
1082         outputs:                                 1082         outputs:
1083                 The ioctl return value is the    1083                 The ioctl return value is the new audio buffer size, or -1
1084                 on error.                        1084                 on error.
1085                                                  1085 
1086         error return:                            1086         error return:
1087           - ENOSYS      Not supported by this    1087           - ENOSYS      Not supported by this driver.
1088                                                  1088 
1089         notes:                                   1089         notes:
1090                 Not supported by all drivers.    1090                 Not supported by all drivers.
1091                                                  1091 
1092                                                  1092 
1093                                                  1093 
1094                                                  1094 
1095 DVD_READ_STRUCT                 Read structur    1095 DVD_READ_STRUCT                 Read structure
1096                                                  1096 
1097         usage::                                  1097         usage::
1098                                                  1098 
1099           dvd_struct s;                          1099           dvd_struct s;
1100                                                  1100 
1101           ioctl(fd, DVD_READ_STRUCT, &s);        1101           ioctl(fd, DVD_READ_STRUCT, &s);
1102                                                  1102 
1103         inputs:                                  1103         inputs:
1104                 dvd_struct structure, contain    1104                 dvd_struct structure, containing:
1105                                                  1105 
1106             =================== =============    1106             =================== ==========================================
1107             type                specifies the    1107             type                specifies the information desired, one of
1108                                 DVD_STRUCT_PH    1108                                 DVD_STRUCT_PHYSICAL, DVD_STRUCT_COPYRIGHT,
1109                                 DVD_STRUCT_DI    1109                                 DVD_STRUCT_DISCKEY, DVD_STRUCT_BCA,
1110                                 DVD_STRUCT_MA    1110                                 DVD_STRUCT_MANUFACT
1111             physical.layer_num  desired layer    1111             physical.layer_num  desired layer, indexed from 0
1112             copyright.layer_num desired layer    1112             copyright.layer_num desired layer, indexed from 0
1113             disckey.agid                         1113             disckey.agid
1114             =================== =============    1114             =================== ==========================================
1115                                                  1115 
1116         outputs:                                 1116         outputs:
1117                 dvd_struct structure, contain    1117                 dvd_struct structure, containing:
1118                                                  1118 
1119             =================== =============    1119             =================== ================================
1120             physical            for type == D    1120             physical            for type == DVD_STRUCT_PHYSICAL
1121             copyright           for type == D    1121             copyright           for type == DVD_STRUCT_COPYRIGHT
1122             disckey.value       for type == D    1122             disckey.value       for type == DVD_STRUCT_DISCKEY
1123             bca.{len,value}     for type == D    1123             bca.{len,value}     for type == DVD_STRUCT_BCA
1124             manufact.{len,valu} for type == D    1124             manufact.{len,valu} for type == DVD_STRUCT_MANUFACT
1125             =================== =============    1125             =================== ================================
1126                                                  1126 
1127         error returns:                           1127         error returns:
1128           - EINVAL      physical.layer_num ex    1128           - EINVAL      physical.layer_num exceeds number of layers
1129           - EIO         Received invalid resp    1129           - EIO         Received invalid response from drive
1130                                                  1130 
1131                                                  1131 
1132                                                  1132 
1133 DVD_WRITE_STRUCT                Write structu    1133 DVD_WRITE_STRUCT                Write structure
1134                                                  1134 
1135         Not implemented, as of 2.6.8.1           1135         Not implemented, as of 2.6.8.1
1136                                                  1136 
1137                                                  1137 
1138                                                  1138 
1139 DVD_AUTH                        Authenticatio    1139 DVD_AUTH                        Authentication
1140                                                  1140 
1141         usage::                                  1141         usage::
1142                                                  1142 
1143           dvd_authinfo ai;                       1143           dvd_authinfo ai;
1144                                                  1144 
1145           ioctl(fd, DVD_AUTH, &ai);              1145           ioctl(fd, DVD_AUTH, &ai);
1146                                                  1146 
1147         inputs:                                  1147         inputs:
1148                 dvd_authinfo structure.  See     1148                 dvd_authinfo structure.  See <linux/cdrom.h>
1149                                                  1149 
1150                                                  1150 
1151         outputs:                                 1151         outputs:
1152                 dvd_authinfo structure.          1152                 dvd_authinfo structure.
1153                                                  1153 
1154                                                  1154 
1155         error return:                            1155         error return:
1156           - ENOTTY      ai.type not recognize    1156           - ENOTTY      ai.type not recognized.
1157                                                  1157 
1158                                                  1158 
1159                                                  1159 
1160 CDROM_SEND_PACKET                                1160 CDROM_SEND_PACKET
1161         send a packet to the drive               1161         send a packet to the drive
1162                                                  1162 
1163                                                  1163 
1164         usage::                                  1164         usage::
1165                                                  1165 
1166           struct cdrom_generic_command cgc;      1166           struct cdrom_generic_command cgc;
1167                                                  1167 
1168           ioctl(fd, CDROM_SEND_PACKET, &cgc);    1168           ioctl(fd, CDROM_SEND_PACKET, &cgc);
1169                                                  1169 
1170         inputs:                                  1170         inputs:
1171                 cdrom_generic_command structu    1171                 cdrom_generic_command structure containing the packet to send.
1172                                                  1172 
1173                                                  1173 
1174         outputs:                                 1174         outputs:
1175                 none                             1175                 none
1176                                                  1176 
1177           cdrom_generic_command structure con    1177           cdrom_generic_command structure containing results.
1178                                                  1178 
1179         error return:                            1179         error return:
1180           - EIO                                  1180           - EIO
1181                                                  1181 
1182                         command failed.          1182                         command failed.
1183           - EPERM                                1183           - EPERM
1184                                                  1184 
1185                         Operation not permitt    1185                         Operation not permitted, either because a
1186                         write command was att    1186                         write command was attempted on a drive which
1187                         is opened read-only,     1187                         is opened read-only, or because the command
1188                         requires CAP_SYS_RAWI    1188                         requires CAP_SYS_RAWIO
1189           - EINVAL                               1189           - EINVAL
1190                                                  1190 
1191                         cgc.data_direction no    1191                         cgc.data_direction not set
1192                                                  1192 
1193                                                  1193 
1194                                                  1194 
1195 CDROM_NEXT_WRITABLE                              1195 CDROM_NEXT_WRITABLE
1196         get next writable block                  1196         get next writable block
1197                                                  1197 
1198                                                  1198 
1199         usage::                                  1199         usage::
1200                                                  1200 
1201           long next;                             1201           long next;
1202                                                  1202 
1203           ioctl(fd, CDROM_NEXT_WRITABLE, &nex    1203           ioctl(fd, CDROM_NEXT_WRITABLE, &next);
1204                                                  1204 
1205         inputs:                                  1205         inputs:
1206                 none                             1206                 none
1207                                                  1207 
1208                                                  1208 
1209         outputs:                                 1209         outputs:
1210                 The next writable block.         1210                 The next writable block.
1211                                                  1211 
1212                                                  1212 
1213         notes:                                   1213         notes:
1214                 If the device does not suppor    1214                 If the device does not support this ioctl directly, the
1215                                                  1215 
1216           ioctl will return CDROM_LAST_WRITTE    1216           ioctl will return CDROM_LAST_WRITTEN + 7.
1217                                                  1217 
1218                                                  1218 
1219                                                  1219 
1220 CDROM_LAST_WRITTEN                               1220 CDROM_LAST_WRITTEN
1221         get last block written on disc           1221         get last block written on disc
1222                                                  1222 
1223                                                  1223 
1224         usage::                                  1224         usage::
1225                                                  1225 
1226           long last;                             1226           long last;
1227                                                  1227 
1228           ioctl(fd, CDROM_LAST_WRITTEN, &last    1228           ioctl(fd, CDROM_LAST_WRITTEN, &last);
1229                                                  1229 
1230         inputs:                                  1230         inputs:
1231                 none                             1231                 none
1232                                                  1232 
1233                                                  1233 
1234         outputs:                                 1234         outputs:
1235                 The last block written on dis    1235                 The last block written on disc
1236                                                  1236 
1237                                                  1237 
1238         notes:                                   1238         notes:
1239                 If the device does not suppor    1239                 If the device does not support this ioctl directly, the
1240                 result is derived from the di    1240                 result is derived from the disc's table of contents.  If the
1241                 table of contents can't be re    1241                 table of contents can't be read, this ioctl returns an
1242                 error.                           1242                 error.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php