About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / ioctl / cdrom.txt




Custom Search

Based on kernel version 3.16. Page generated on 2014-08-06 21:40 EST.

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

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.