⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdrom.txt

📁 linux 内核源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		Summary of CDROM ioctl calls.		============================		Edward A. Falk <efalk@google.com>		November, 2004This document attempts to describe the ioctl(2) calls supported bythe CDROM layer.  These are by-and-large implemented (as of Linux 2.6)in drivers/cdrom/cdrom.c and drivers/block/scsi_ioctl.cioctl values are listed in <linux/cdrom.h>.  As of this writing, theyare as follows:	CDROMPAUSE		Pause Audio Operation	CDROMRESUME		Resume paused Audio Operation	CDROMPLAYMSF		Play Audio MSF (struct cdrom_msf)	CDROMPLAYTRKIND		Play Audio Track/index (struct cdrom_ti)	CDROMREADTOCHDR		Read TOC header (struct cdrom_tochdr)	CDROMREADTOCENTRY	Read TOC entry (struct cdrom_tocentry)	CDROMSTOP		Stop the cdrom drive	CDROMSTART		Start the cdrom drive	CDROMEJECT		Ejects the cdrom media	CDROMVOLCTRL		Control output volume (struct cdrom_volctrl)	CDROMSUBCHNL		Read subchannel data (struct cdrom_subchnl)	CDROMREADMODE2		Read CDROM mode 2 data (2336 Bytes)					   (struct cdrom_read)	CDROMREADMODE1		Read CDROM mode 1 data (2048 Bytes)					   (struct cdrom_read)	CDROMREADAUDIO		(struct cdrom_read_audio)	CDROMEJECT_SW		enable(1)/disable(0) auto-ejecting	CDROMMULTISESSION	Obtain the start-of-last-session				  address of multi session disks				  (struct cdrom_multisession)	CDROM_GET_MCN		Obtain the "Universal Product Code"				   if available (struct cdrom_mcn)	CDROM_GET_UPC		Deprecated, use CDROM_GET_MCN instead.	CDROMRESET		hard-reset the drive	CDROMVOLREAD		Get the drive's volume setting					  (struct cdrom_volctrl)	CDROMREADRAW		read data in raw mode (2352 Bytes)					   (struct cdrom_read)	CDROMREADCOOKED		read data in cooked mode	CDROMSEEK		seek msf address	CDROMPLAYBLK		scsi-cd only, (struct cdrom_blk)	CDROMREADALL		read all 2646 bytes	CDROMGETSPINDOWN	return 4-bit spindown value	CDROMSETSPINDOWN	set 4-bit spindown value	CDROMCLOSETRAY		pendant of CDROMEJECT	CDROM_SET_OPTIONS	Set behavior options	CDROM_CLEAR_OPTIONS	Clear behavior options	CDROM_SELECT_SPEED	Set the CD-ROM speed	CDROM_SELECT_DISC	Select disc (for juke-boxes)	CDROM_MEDIA_CHANGED	Check is media changed	CDROM_DRIVE_STATUS	Get tray position, etc.	CDROM_DISC_STATUS	Get disc type, etc.	CDROM_CHANGER_NSLOTS	Get number of slots	CDROM_LOCKDOOR		lock or unlock door	CDROM_DEBUG		Turn debug messages on/off	CDROM_GET_CAPABILITY	get capabilities	CDROMAUDIOBUFSIZ	set the audio buffer size	DVD_READ_STRUCT		Read structure	DVD_WRITE_STRUCT	Write structure	DVD_AUTH		Authentication	CDROM_SEND_PACKET	send a packet to the drive	CDROM_NEXT_WRITABLE	get next writable block	CDROM_LAST_WRITTEN	get last block written on discThe information that follows was determined from reading kernel sourcecode.  It is likely that some corrections will be made over time.General:	Unless otherwise specified, all ioctl calls return 0 on success	and -1 with errno set to an appropriate value on error.  (Some	ioctls return non-negative data values.)	Unless otherwise specified, all ioctl calls return -1 and set	errno to EFAULT on a failed attempt to copy data to or from user	address space.	Individual drivers may return error codes not listed here.	Unless otherwise specified, all data structures and constants	are defined in <linux/cdrom.h>CDROMPAUSE			Pause Audio Operation	usage:	  ioctl(fd, CDROMPAUSE, 0);	inputs:		none	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.CDROMRESUME			Resume paused Audio Operation	usage:	  ioctl(fd, CDROMRESUME, 0);	inputs:		none	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.CDROMPLAYMSF			Play Audio MSF (struct cdrom_msf)	usage:	  struct cdrom_msf msf;	  ioctl(fd, CDROMPLAYMSF, &msf);	inputs:	  cdrom_msf structure, describing a segment of music to play	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.	notes:	  MSF stands for minutes-seconds-frames	  LBA stands for logical block address	  Segment is described as start and end times, where each time	  is described as minutes:seconds:frames.  A frame is 1/75 of	  a second.CDROMPLAYTRKIND			Play Audio Track/index (struct cdrom_ti)	usage:	  struct cdrom_ti ti;	  ioctl(fd, CDROMPLAYTRKIND, &ti);	inputs:	  cdrom_ti structure, describing a segment of music to play	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.	notes:	  Segment is described as start and end times, where each time	  is described as a track and an index.CDROMREADTOCHDR			Read TOC header (struct cdrom_tochdr)	usage:	  cdrom_tochdr header;	  ioctl(fd, CDROMREADTOCHDR, &header);	inputs:	  cdrom_tochdr structure	outputs:	  cdrom_tochdr structure	error return:	  ENOSYS	cd drive not audio-capable.CDROMREADTOCENTRY		Read TOC entry (struct cdrom_tocentry)	usage:	  struct cdrom_tocentry entry;	  ioctl(fd, CDROMREADTOCENTRY, &entry);	inputs:	  cdrom_tocentry structure	outputs:	  cdrom_tocentry structure	error return:	  ENOSYS	cd drive not audio-capable.	  EINVAL	entry.cdte_format not CDROM_MSF or CDROM_LBA	  EINVAL	requested track out of bounds	  EIO		I/O error reading TOC	notes:	  TOC stands for Table Of Contents	  MSF stands for minutes-seconds-frames	  LBA stands for logical block addressCDROMSTOP			Stop the cdrom drive	usage:	  ioctl(fd, CDROMSTOP, 0);	inputs:		none	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.	notes:	  Exact interpretation of this ioctl depends on the device,	  but most seem to spin the drive down.CDROMSTART			Start the cdrom drive	usage:	  ioctl(fd, CDROMSTART, 0);	inputs:		none	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.	notes:	  Exact interpretation of this ioctl depends on the device,	  but most seem to spin the drive up and/or close the tray.	  Other devices ignore the ioctl completely.CDROMEJECT			Ejects the cdrom media	usage:	  ioctl(fd, CDROMEJECT, 0);	inputs:		none	outputs:	none	error returns:	  ENOSYS	cd drive not capable of ejecting	  EBUSY		other processes are accessing drive, or door is locked	notes:	  See CDROM_LOCKDOOR, below.CDROMCLOSETRAY			pendant of CDROMEJECT	usage:	  ioctl(fd, CDROMEJECT, 0);	inputs:		none	outputs:	none	error returns:	  ENOSYS	cd drive not capable of ejecting	  EBUSY		other processes are accessing drive, or door is locked	notes:	  See CDROM_LOCKDOOR, below.CDROMVOLCTRL			Control output volume (struct cdrom_volctrl)	usage:	  struct cdrom_volctrl volume;	  ioctl(fd, CDROMVOLCTRL, &volume);	inputs:	  cdrom_volctrl structure containing volumes for up to 4	  channels.	outputs:	none	error return:	  ENOSYS	cd drive not audio-capable.CDROMVOLREAD			Get the drive's volume setting					  (struct cdrom_volctrl)	usage:	  struct cdrom_volctrl volume;	  ioctl(fd, CDROMVOLREAD, &volume);	inputs:		none	outputs:	  The current volume settings.	error return:	  ENOSYS	cd drive not audio-capable.CDROMSUBCHNL			Read subchannel data (struct cdrom_subchnl)	usage:	  struct cdrom_subchnl q;	  ioctl(fd, CDROMSUBCHNL, &q);	inputs:	  cdrom_subchnl structure	outputs:	  cdrom_subchnl structure	error return:	  ENOSYS	cd drive not audio-capable.	  EINVAL	format not CDROM_MSF or CDROM_LBA	notes:	  Format is converted to CDROM_MSF on returnCDROMREADRAW			read data in raw mode (2352 Bytes)					   (struct cdrom_read)	usage:	  union {	    struct cdrom_msf msf;		/* input */	    char buffer[CD_FRAMESIZE_RAW];	/* return */	  } arg;	  ioctl(fd, CDROMREADRAW, &arg);	inputs:	  cdrom_msf structure indicating an address to read.	  Only the start values are significant.	outputs:	  Data written to address provided by user.	error return:	  EINVAL	address less than 0, or msf less than 0:2:0	  ENOMEM	out of memory	notes:	  As of 2.6.8.1, comments in <linux/cdrom.h> indicate that this	  ioctl accepts a cdrom_read structure, but actual source code	  reads a cdrom_msf structure and writes a buffer of data to	  the same address.	  MSF values are converted to LBA values via this formula:	    lba = (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET;CDROMREADMODE1			Read CDROM mode 1 data (2048 Bytes)					   (struct cdrom_read)	notes:	  Identical to CDROMREADRAW except that block size is	  CD_FRAMESIZE (2048) bytesCDROMREADMODE2			Read CDROM mode 2 data (2336 Bytes)					   (struct cdrom_read)	notes:	  Identical to CDROMREADRAW except that block size is	  CD_FRAMESIZE_RAW0 (2336) bytesCDROMREADAUDIO			(struct cdrom_read_audio)	usage:	  struct cdrom_read_audio ra;	  ioctl(fd, CDROMREADAUDIO, &ra);	inputs:	  cdrom_read_audio structure containing read start	  point and length	outputs:	  audio data, returned to buffer indicated by ra	error return:	  EINVAL	format not CDROM_MSF or CDROM_LBA	  EINVAL	nframes not in range [1 75]	  ENXIO		drive has no queue (probably means invalid fd)	  ENOMEM	out of memoryCDROMEJECT_SW			enable(1)/disable(0) auto-ejecting	usage:	  int val;	  ioctl(fd, CDROMEJECT_SW, val);	inputs:	  Flag specifying auto-eject flag.	outputs:	none	error return:	  ENOSYS	Drive is not capable of ejecting.	  EBUSY		Door is lockedCDROMMULTISESSION		Obtain the start-of-last-session				  address of multi session disks				  (struct cdrom_multisession)	usage:	  struct cdrom_multisession ms_info;	  ioctl(fd, CDROMMULTISESSION, &ms_info);	inputs:	  cdrom_multisession structure containing desired	  format.	outputs:	  cdrom_multisession structure is filled with last_session	  information.	error return:	  EINVAL	format not CDROM_MSF or CDROM_LBACDROM_GET_MCN			Obtain the "Universal Product Code"				   if available (struct cdrom_mcn)	usage:	  struct cdrom_mcn mcn;	  ioctl(fd, CDROM_GET_MCN, &mcn);	inputs:		none	outputs:	  Universal Product Code	error return:	  ENOSYS	Drive is not capable of reading MCN data.	notes:	  Source code comments state:	    The following function is implemented, although very few	    audio discs give Universal Product Code information, which	    should just be the Medium Catalog Number on the box.  Note,	    that the way the code is written on the CD is /not/ uniform	    across all discs!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -