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