IOCTL_LIST(2)

NOM
ioctl_list - Liste des requêtes ioctl pour Linux/i386

DESCRIPTION
On trouvera ici la liste des arguments IOCTL du noyau Linux 1.3.27. Cette liste contient 421 requêtes ioctl situées dans </usr/include/{asm,linux}/*.h>. Pour chaque ioctl, on trouvera sa valeur numérique, son nom et le type de son argument.

Un type d'argument const struct foo * signifie que l'argument est une entrée pour le noyau, alors que struct foo * signifie que c'est une sortie pour le noyau. Si le noyau utilise un argument à la fois en entrée et sortie, il sera indiqué avec // I-O.

Certains ioctls prennent plusieurs arguments, ou retournent plus de valeurs qu'une simple structure. Ceux-ci sont indiqués avec // PLUS et documentés plus tard.

Cette liste est très incomplète.

  Structure des ioctl
Les valeurs des commandes ioctl sont des constantes 32 bits. En principe, ces constantes sont complètement arbitraires, mais certaines personnes ont essayé de les structurer un peu.

Dans les anciens noyaux Linux, la plupart étaient des constantes 16 bits, où le dernier octet était un numéro de série, et le(s) précédent(s) indiquait le pilote. Parfois c'était le numéro majeur : 0x03 pour les ioctls HDIO_*, 0x06 pour ceux LP*. Et parfois une ou plusieurs lettres ASCII. Par exemple, TCGETS vaut 0x00005401, avec 0x54 = 'T' indiquant le pilote de terminal, et CYGETTIMEOUT vaut 0x00435906, avec 0x43 0x59 = 'C' 'Y' indiquant le pilote cyclade.

Ensuite (0.98p5) un peu plus d'information a été ajoutée dans le numéro. Il y a deux bits de direction. (00 : aucune, 01 : écriture, 10 : lecture, 11 : lecture/écriture) suivis de 14 bits de taille (indiquant la taille de l'argument), suivis d'un type sur 8-bits (ce qui regroupe les ioctls pour un même but ou un même pilote), puis un numéro de série sur 8-bits.

Les macros décrivant cette structure se trouvent dans <asm/ioctl.h> et sont _IO(type,nr) et {_IOR,_IOW,_IOWR}(type,nr,size). Elles utilisent sizeof(size), ce qui indique que size est un mauvais nom ici, le troisième paramètre étant le type de donnée.

Notez que les bits de taille sont peu fiables - dans de nombreux cas ils sont faux - soit à cause d'une macro boguée utilisant sizeof(sizeof(struct)), ou à cause de valeurs imposées.

Ainsi, il semble que la nouvelle structure n'offre que des désagréments : elle n'aide pas vraiment aux vérifications, mais elle crée des valeurs différentes sur les diverses architectures.

VALEUR RENVOYÉE
Les ioctls décents renvoient 0 s'ils réussissent et -1 en cas d'erreur, avec toute valeur de sortie stockée via l'argument. Toutefois, certains renvoient en fait la valeur de sortie directement. Ceci n'est pas encore indiqué ci-dessous.
// Table principale
// <include/asm-i386/socket.h>
0x00008901  FIOSETOWN			const int *
0x00008902  SIOCSPGRP			const int *
0x00008903  FIOGETOWN			int *
0x00008904  SIOCGPGRP			int *
0x00008905  SIOCATMARK			int *
0x00008906  SIOCGSTAMP			timeval *
// <include/asm-i386/termios.h>
0x00005401  TCGETS				struct termios *
0x00005402  TCSETS				const struct termios *
0x00005403  TCSETSW				const struct termios *
0x00005404  TCSETSF				const struct termios *
0x00005405  TCGETA				struct termio *
0x00005406  TCSETA				const struct termio *
0x00005407  TCSETAW				const struct termio *
0x00005408  TCSETAF				const struct termio *
0x00005409  TCSBRK				int
0x0000540A  TCXONC				int
0x0000540B  TCFLSH				int
0x0000540C  TIOCEXCL			void
0x0000540D  TIOCNXCL			void
0x0000540E  TIOCSCTTY			int
0x0000540F  TIOCGPGRP			pid_t *
0x00005410  TIOCSPGRP			const pid_t *
0x00005411  TIOCOUTQ			int *
0x00005412  TIOCSTI				const char *
0x00005413  TIOCGWINSZ			struct winsize *
0x00005414  TIOCSWINSZ			const struct winsize *
0x00005415  TIOCMGET			int *
0x00005416  TIOCMBIS			const int *
0x00005417  TIOCMBIC			const int *
0x00005418  TIOCMSET			const int *
0x00005419  TIOCGSOFTCAR			int *
0x0000541A  TIOCSSOFTCAR			const int *
0x0000541B  FIONREAD			int *
0x0000541B  TIOCINQ				int *
0x0000541C  TIOCLINUX			const char *			// PLUS
0x0000541D  TIOCCONS			void
0x0000541E  TIOCGSERIAL			struct serial_struct *
0x0000541F  TIOCSSERIAL			const struct serial_struct *
0x00005420  TIOCPKT				const int *
0x00005421  FIONBIO				const int *
0x00005422  TIOCNOTTY			void
0x00005423  TIOCSETD			const int *
0x00005424  TIOCGETD			int *
0x00005425  TCSBRKP				int
0x00005426  TIOCTTYGSTRUCT		struct tty_struct *
0x00005450  FIONCLEX			void
0x00005451  FIOCLEX				void
0x00005452  FIOASYNC			const int *
0x00005453  TIOCSERCONFIG		void
0x00005454  TIOCSERGWILD			int *
0x00005455  TIOCSERSWILD			const int *
0x00005456  TIOCGLCKTRMIOS		struct termios *
0x00005457  TIOCSLCKTRMIOS		const struct temios *
0x00005458  TIOCSERGSTRUCT		struct async_struct *
0x00005459  TIOCSERGETLSR		int *
0x0000545A  TIOCSERGETMULTI		struct serial_multiport_struct *
0x0000545B  TIOCSERSETMULTI		const struct serial_multiport_struct *
// <include/linux/ax25.h>
0x000089E0  SIOCAX25GETUID		const struct sockaddr_ax25 *
0x000089E1  SIOCAX25ADDUID		const struct sockaddr_ax25 *
0x000089E2  SIOCAX25DELUID		const struct sockaddr_ax25 *
0x000089E3  SIOCAX25NOUID		const int *
0x000089E4  SIOCAX25DIGCTL		const int *
0x000089E5  SIOCAX25GETPARMS		struct ax25_parms_struct *	// I-O
0x000089E6  SIOCAX25SETPARMS		const struct ax25_parms-struct *
// <include/linux/cdk.h>
0x00007314  STL_BINTR			void
0x00007315  STL_BSTART			void
0x00007316  STL_BSTOP			void
0x00007317  STL_BRESET			void
// <include/linux/cdrom.h>
0x00005301  CDROMPAUSE			void
0x00005302  CDROMRESUME			void
0x00005303  CDROMPLAYMSF			const struct cdrom_msf *
0x00005304  CDROMPLAYTRKIND		const struct cdrom_ti *
0x00005305  CDROMREADTOCHDR		struct cdrom_tochdr *
0x00005306  CDROMREADTOCENTRY		struct cdrom_tocentry *		// I-O
0x00005307  CDROMSTOP			void
0x00005308  CDROMSTART			void
0x00005309  CDROMEJECT			void
0x0000530A  CDROMVOLCTRL			const struct cdrom_volctrl *
0x0000530B  CDROMSUBCHNL			struct cdrom_subchnl *		// I-O
0x0000530C  CDROMREADMODE2		const struct cdrom_msf *	// PLUS
0x0000530D  CDROMREADMODE1		const struct cdrom_msf *	// PLUS
0x0000530E  CDROMREADAUDIO		const struct cdrom_read_audio *	// PLUS
0x0000530F  CDROMEJECT_SW		int
0x00005310  CDROMMULTISESSION		struct cdrom_multisession *	// I-O
0x00005311  CDROM_GET_UPC		struct { char [8]; } *
0x00005312  CDROMRESET			void
0x00005313  CDROMVOLREAD			struct cdrom_volctrl *
0x00005314  CDROMREADRAW			const struct cdrom_msf *	// PLUS
0x00005315  CDROMREADCOOKED		const struct cdrom_msf *	// PLUS
0x00005316  CDROMSEEK			const struct cdrom_msf *
// <include/linux/cm206.h>
0x00002000  CM206CTL_GET_STAT		int
0x00002001  CM206CTL_GET_LAST_STAT	int
// <include/linux/cyclades.h>
0x00435901  CYGETMON			struct cyclades_monitor *
0x00435902  CYGETTHRESH			int *
0x00435903  CYSETTHRESH			int
0x00435904  CYGETDEFTHRESH		int *
0x00435905  CYSETDEFTHRESH		int
0x00435906  CYGETTIMEOUT			int *
0x00435907  CYSETTIMEOUT			int
0x00435908  CYGETDEFTIMEOUT		int *
0x00435909  CYSETDEFTIMEOUT		int
// <include/linux/ext2_fs.h>
0x80046601  EXT2_IOC_GETFLAGS		int *
0x40046602  EXT2_IOC_SETFLAGS		const int *
0x80047601  EXT2_IOC_GETVERSION	int *
0x40047602  EXT2_IOC_SETVERSION	const int *
// <include/linux/fd.h>
0x00000000  FDCLRPRM			void
0x00000001  FDSETPRM			const struct floppy_struct *
0x00000002  FDDEFPRM			const struct floppy_struct *
0x00000003  FDGETPRM			struct floppy_struct *
0x00000004  FDMSGON				void
0x00000005  FDMSGOFF			void
0x00000006  FDFMTBEG			void
0x00000007  FDFMTTRK			const struct format_descr *
0x00000008  FDFMTEND			void
0x0000000A  FDSETEMSGTRESH		int
0x0000000B  FDFLUSH				void
0x0000000C  FDSETMAXERRS			const struct floppy_max_errors *
0x0000000E  FDGETMAXERRS			struct floppy_max_errors *
0x00000010  FDGETDRVTYP			struct { char [16]; } *
0x00000014  FDSETDRVPRM			const struct floppy_drive_params *
0x00000015  FDGETDRVPRM			struct floppy_drive_params *
0x00000016  FDGETDRVSTAT			struct floppy_drive_struct *
0x00000017  FDPOLLDRVSTAT		struct floppy_drive_struct *
0x00000018  FDRESET				int
0x00000019  FDGETFDCSTAT			struct floppy_fdc_state *
0x0000001B  FDWERRORCLR			void
0x0000001C  FDWERRORGET			struct floppy_write_errors *
0x0000001E  FDRAWCMD			struct floppy_raw_cmd *	// PLUS	// I-O
0x00000028  FDTWADDLE			void
// <include/linux/fs.h>
0x0000125D  BLKROSET			const int *
0x0000125E  BLKROGET			int *
0x0000125F  BLKRRPART			void
0x00001260  BLKGETSIZE			unsigned long *
0x00001261  BLKFLSBUF			void
0x00001262  BLKRASET			int
0x00001263  BLKRAGET			int *
0x00000001  FIBMAP				int *				// I-O
0x00000002  FIGETBSZ			int *
// <include/linux/hdreg.h>
0x00000301  HDIO_GETGEO			struct hd_geometry *
0x00000302  HDIO_GET_UNMASKINTR	int *
0x00000304  HDIO_GET_MULTCOUNT	int *
0x00000307  HDIO_GET_IDENTITY		struct hd_driveid *
0x00000308  HDIO_GET_KEEPSETTINGS	int *
0x00000309  HDIO_GET_CHIPSET		int *
0x0000030A  HDIO_GET_NOWERR		int *
0x0000030B  HDIO_GET_DMA			int *
0x0000031F  HDIO_DRIVE_CMD		int *				// I-O
0x00000321  HDIO_SET_MULTCOUNT	int
0x00000322  HDIO_SET_UNMASKINTR	int
0x00000323  HDIO_SET_KEEPSETTINGS	int
0x00000324  HDIO_SET_CHIPSET		int
0x00000325  HDIO_SET_NOWERR		int
0x00000326  HDIO_SET_DMA			int
// <include/linux/if_eql.h>
0x000089F0  EQL_ENSLAVE			struct ifreq *		// PLUS // I-O
0x000089F1  EQL_EMANCIPATE		struct ifreq *		// PLUS // I-O
0x000089F2  EQL_GETSLAVECFG		struct ifreq *		// PLUS // I-O
0x000089F3  EQL_SETSLAVECFG		struct ifreq *		// PLUS // I-O
0x000089F4  EQL_GETMASTRCFG		struct ifreq *		// PLUS // I-O
0x000089F5  EQL_SETMASTRCFG		struct ifreq *		// PLUS // I-O
// <include/linux/if_plip.h>
0x000089F0  SIOCDEVPLIP			struct ifreq *			// I-O
// <include/linux/if_ppp.h>
0x00005490  PPPIOCGFLAGS			int *
0x00005491  PPPIOCSFLAGS			const int *
0x00005492  PPPIOCGASYNCMAP		int *
0x00005493  PPPIOCSASYNCMAP		const int *
0x00005494  PPPIOCGUNIT			int *
0x00005495  PPPIOCSINPSIG		const int *
0x00005497  PPPIOCSDEBUG			const int *
0x00005498  PPPIOCGDEBUG			int *
0x00005499  PPPIOCGSTAT			struct ppp_stats *
0x0000549A  PPPIOCGTIME			struct ppp_ddinfo *
0x0000549B  PPPIOCGXASYNCMAP		struct { int [8]; } *
0x0000549C  PPPIOCSXASYNCMAP		const struct { int [8]; } *
0x0000549D  PPPIOCSMRU			const int *
0x0000549E  PPPIOCRASYNCMAP		const int *
0x0000549F  PPPIOCSMAXCID		const int *
// <include/linux/ipx.h>
0x000089E0  SIOCAIPXITFCRT		const char *
0x000089E1  SIOCAIPXPRISLT		const char *
0x000089E2  SIOCIPXCFGDATA		struct ipx_config_data *
// <include/linux/kd.h>
0x00004B60  GIO_FONT			struct { char [8192]; } *
0x00004B61  PIO_FONT			const struct { char [8192]; } *
0x00004B6B  GIO_FONTX			struct console_font_desc *  // PLUS I-O
0x00004B6C  PIO_FONTX			const struct console_font_desc * //MORE
0x00004B70  GIO_CMAP			struct { char [48]; } *
0x00004B71  PIO_CMAP			const struct { char [48]; }
0x00004B2F  KIOCSOUND			int
0x00004B30  KDMKTONE			int
0x00004B31  KDGETLED			char *
0x00004B32  KDSETLED			int
0x00004B33  KDGKBTYPE			char *
0x00004B34  KDADDIO				int				// PLUS
0x00004B35  KDDELIO				int				// PLUS
0x00004B36  KDENABIO			void				// PLUS
0x00004B37  KDDISABIO			void				// PLUS
0x00004B3A  KDSETMODE			int
0x00004B3B  KDGETMODE			int *
0x00004B3C  KDMAPDISP			void				// PLUS
0x00004B3D  KDUNMAPDISP			void				// PLUS
0x00004B40  GIO_SCRNMAP			struct { char [E_TABSZ]; } *
0x00004B41  PIO_SCRNMAP			const struct { char [E_TABSZ]; } *
0x00004B69  GIO_UNISCRNMAP		struct { short [E_TABSZ]; } *
0x00004B6A  PIO_UNISCRNMAP		const struct { short [E_TABSZ]; } *
0x00004B66  GIO_UNIMAP			struct unimapdesc *	// PLUS	// I-O
0x00004B67  PIO_UNIMAP			const struct unimapdesc *	// PLUS
0x00004B68  PIO_UNIMAPCLR		const struct unimapinit *
0x00004B44  KDGKBMODE			int *
0x00004B45  KDSKBMODE			int
0x00004B62  KDGKBMETA			int *
0x00004B63  KDSKBMETA			int
0x00004B64  KDGKBLED			int *
0x00004B65  KDSKBLED			int
0x00004B46  KDGKBENT			struct kbentry *		// I-O
0x00004B47  KDSKBENT			const struct kbentry *
0x00004B48  KDGKBSENT			struct kbsentry *		// I-O
0x00004B49  KDSKBSENT			const struct kbsentry *
0x00004B4A  KDGKBDIACR			struct kbdiacrs *
0x00004B4B  KDSKBDIACR			const struct kbdiacrs *
0x00004B4C  KDGETKEYCODE			struct kbkeycode *		// I-O
0x00004B4D  KDSETKEYCODE			const struct kbkeycode *
0x00004B4E  KDSIGACCEPT			int
// <include/linux/lp.h>
0x00000601  LPCHAR				int
0x00000602  LPTIME				int
0x00000604  LPABORT				int
0x00000605  LPSETIRQ			int
0x00000606  LPGETIRQ			int *
0x00000608  LPWAIT				int
0x00000609  LPCAREFUL			int
0x0000060A  LPABORTOPEN			int
0x0000060B  LPGETSTATUS			int *
0x0000060C  LPRESET				void
0x0000060D  LPGETSTATS			struct lp_stats *
// <include/linux/mroute.h>
0x000089E0  SIOCGETVIFCNT		struct sioc_vif_req *		// I-O
0x000089E1  SIOCGETSGCNT			struct sioc_sg_req *		// I-O
// <include/linux/mtio.h>
0x40086D01  MTIOCTOP			const struct mtop *
0x801C6D02  MTIOCGET			struct mtget *
0x80046D03  MTIOCPOS			struct mtpos *
0x80206D04  MTIOCGETCONFIG		struct mtconfiginfo *
0x40206D05  MTIOCSETCONFIG		const struct mtconfiginfo *
// <include/linux/netrom.h>
0x000089E0  SIOCNRGETPARMS		struct nr_parms_struct *	// I-O
0x000089E1  SIOCNRSETPARMS		const struct nr_parms_struct *
0x000089E2  SIOCNRDECOBS			void
0x000089E3  SIOCNRRTCTL			const int *
// <include/linux/sbpcd.h>
0x00009000  DDIOCSDBG			const int *
0x00005382  CDROMAUDIOBUFSIZ		int
// <include/linux/scc.h>
0x00005470  TIOCSCCINI			void
0x00005471  TIOCCHANINI			const struct scc_modem *
0x00005472  TIOCGKISS			struct ioctl_command *		// I-O
0x00005473  TIOCSKISS			const struct ioctl_command *
0x00005474  TIOCSCCSTAT			struct scc_stat *
// <include/linux/scsi.h>
0x00005382  SCSI_IOCTL_GET_IDLUN		struct { int [2]; } *
0x00005383  SCSI_IOCTL_TAGGED_ENABLE	void
0x00005384  SCSI_IOCTL_TAGGED_DISABLE	void
0x00005385  SCSI_IOCTL_PROBE_HOST		const int *			// PLUS
// <include/linux/smb_fs.h>
0x80027501  SMB_IOC_GETMOUNTUID	uid_t *
// <include/linux/sockios.h>
0x0000890B  SIOCADDRT			const struct rtentry *		// PLUS
0x0000890C  SIOCDELRT			const struct rtentry *		// PLUS
0x00008910  SIOCGIFNAME			char []
0x00008911  SIOCSIFLINK			void
0x00008912  SIOCGIFCONF			struct ifconf *		// PLUS	// I-O
0x00008913  SIOCGIFFLAGS			struct ifreq *			// I-O
0x00008914  SIOCSIFFLAGS			const struct ifreq *
0x00008915  SIOCGIFADDR			struct ifreq *			// I-O
0x00008916  SIOCSIFADDR			const struct ifreq *
0x00008917  SIOCGIFDSTADDR		struct ifreq *			// I-O
0x00008918  SIOCSIFDSTADDR		const struct ifreq *
0x00008919  SIOCGIFBRDADDR		struct ifreq *			// I-O
0x0000891A  SIOCSIFBRDADDR		const struct ifreq *
0x0000891B  SIOCGIFNETMASK		struct ifreq *			// I-O
0x0000891C  SIOCSIFNETMASK		const struct ifreq *
0x0000891D  SIOCGIFMETRIC		struct ifreq *			// I-O
0x0000891E  SIOCSIFMETRIC		const struct ifreq *
0x0000891F  SIOCGIFMEM			struct ifreq *			// I-O
0x00008920  SIOCSIFMEM			const struct ifreq *
0x00008921  SIOCGIFMTU			struct ifreq *			// I-O
0x00008922  SIOCSIFMTU			const struct ifreq *
0x00008923  OLD_SIOCGIFHWADDR		struct ifreq *			// I-O
0x00008924  SIOCSIFHWADDR		const struct ifreq *		// PLUS
0x00008925  SIOCGIFENCAP			int *
0x00008926  SIOCSIFENCAP			const int *
0x00008927  SIOCGIFHWADDR		struct ifreq *			// I-O
0x00008929  SIOCGIFSLAVE			void
0x00008930  SIOCSIFSLAVE			void
0x00008931  SIOCADDMULTI			const struct ifreq *
0x00008932  SIOCDELMULTI			const struct ifreq *
0x00008933  SIOCGIFINDEX			struct ifreq *			// I-O
0x00008940  SIOCADDRTOLD			void
0x00008941  SIOCDELRTOLD			void
0x00008950  SIOCDARP			const struct arpreq *
0x00008951  SIOCGARP			struct arpreq *			// I-O
0x00008952  SIOCSARP			const struct arpreq *
0x00008960  SIOCDRARP			const struct arpreq *
0x00008961  SIOCGRARP			struct arpreq *			// I-O
0x00008962  SIOCSRARP			const struct arpreq *
0x00008970  SIOCGIFMAP			struct ifreq *			// I-O
0x00008971  SIOCSIFMAP			const struct ifreq *
// <include/linux/soundcard.h>
0x00005100  SNDCTL_SEQ_RESET		void
0x00005101  SNDCTL_SEQ_SYNC		void
0xC08C5102  SNDCTL_SYNTH_INFO		struct synth_info *		// I-O
0xC0045103  SNDCTL_SEQ_CTRLRATE	int *				// I-O
0x80045104  SNDCTL_SEQ_GETOUTCOUNT	int *
0x80045105  SNDCTL_SEQ_GETINCOUNT	int *
0x40045106  SNDCTL_SEQ_PERCMODE	void
0x40285107  SNDCTL_FM_LOAD_INSTR	const struct sbi_instrument *
0x40045108  SNDCTL_SEQ_TESTMIDI		const int *
0x40045109  SNDCTL_SEQ_RESETSAMPLES	const int *
0x8004510A  SNDCTL_SEQ_NRSYNTHS		int *
0x8004510B  SNDCTL_SEQ_NRMIDIS		int *
0xC074510C  SNDCTL_MIDI_INFO		struct midi_info *		// I-O
0x4004510D  SNDCTL_SEQ_THRESHOLD	const int *
0xC004510E  SNDCTL_SYNTH_MEMAVL	int *				// I-O
0x4004510F  SNDCTL_FM_4OP_ENABLE	const int *
0xCFB85110  SNDCTL_PMGR_ACCESS	struct patmgr_info *		// I-O
0x00005111  SNDCTL_SEQ_PANIC		void
0x40085112  SNDCTL_SEQ_OUTOFBAND	const struct seq_event_rec *
0xC0045401  SNDCTL_TMR_TIMEBASE	int *				// I-O
0x00005402  SNDCTL_TMR_START		void
0x00005403  SNDCTL_TMR_STOP		void
0x00005404  SNDCTL_TMR_CONTINUE	void
0xC0045405  SNDCTL_TMR_TEMPO		int *				// I-O
0xC0045406  SNDCTL_TMR_SOURCE		int *				// I-O
0x40045407  SNDCTL_TMR_METRONOME	const int *
0x40045408  SNDCTL_TMR_SELECT		int *				// I-O
0xCFB85001  SNDCTL_PMGR_IFACE		struct patmgr_info *		// I-O
0xC0046D00  SNDCTL_MIDI_PRETIME	int *				// I-O
0xC0046D01  SNDCTL_MIDI_MPUMODE	const int *
0xC0216D02  SNDCTL_MIDI_MPUCMD	struct mpu_command_rec *	// I-O
0x00005000  SNDCTL_DSP_RESET		void
0x00005001  SNDCTL_DSP_SYNC		void
0xC0045002  SNDCTL_DSP_SPEED		int *				// I-O
0xC0045003  SNDCTL_DSP_STEREO		int *				// I-O
0xC0045004  SNDCTL_DSP_GETBLKSIZE	int *				// I-O
0xC0045006  SOUND_PCM_WRITE_CHANNELS	int *				// I-O
0xC0045007  SOUND_PCM_WRITE_FILTER	int *				// I-O
0x00005008  SNDCTL_DSP_POST		void
0xC0045009  SNDCTL_DSP_SUBDIVIDE	int *				// I-O
0xC004500A  SNDCTL_DSP_SETFRAGMENT	int *				// I-O
0x8004500B  SNDCTL_DSP_GETFMTS	int *
0xC0045005  SNDCTL_DSP_SETFMT		int *				// I-O
0x800C500C  SNDCTL_DSP_GETOSPACE	struct audio_buf_info *
0x800C500D  SNDCTL_DSP_GETISPACE	struct audio_buf_info *
0x0000500E  SNDCTL_DSP_NONBLOCK		void
0x80045002  SOUND_PCM_READ_RATE		int *
0x80045006  SOUND_PCM_READ_CHANNELS	int *
0x80045005  SOUND_PCM_READ_BITS		int *
0x80045007  SOUND_PCM_READ_FILTER	int *
0x00004300  SNDCTL_COPR_RESET		void
0xCFB04301  SNDCTL_COPR_LOAD		const struct copr_buffer *
0xC0144302  SNDCTL_COPR_RDATA		struct copr_debug_buf *		// I-O
0xC0144303  SNDCTL_COPR_RCODE		struct copr_debug_buf *		// I-O
0x40144304  SNDCTL_COPR_WDATA		const struct copr_debug_buf *
0x40144305  SNDCTL_COPR_WCODE		const struct copr_debug_buf *
0xC0144306  SNDCTL_COPR_RUN		struct copr_debug_buf *		// I-O
0xC0144307  SNDCTL_COPR_HALT		struct copr_debug_buf *		// I-O
0x4FA44308  SNDCTL_COPR_SENDMSG		const struct copr_msg *
0x8FA44309  SNDCTL_COPR_RCVMSG		struct copr_msg *
0x80044D00  SOUND_MIXER_READ_VOLUME	int *
0x80044D01  SOUND_MIXER_READ_BASS		int *
0x80044D02  SOUND_MIXER_READ_TREBLE	int *
0x80044D03  SOUND_MIXER_READ_SYNTH		int *
0x80044D04  SOUND_MIXER_READ_PCM		int *
0x80044D05  SOUND_MIXER_READ_SPEAKER	int *
0x80044D06  SOUND_MIXER_READ_LINE		int *
0x80044D07  SOUND_MIXER_READ_MIC		int *
0x80044D08  SOUND_MIXER_READ_CD		int *
0x80044D09  SOUND_MIXER_READ_IMIX		int *
0x80044D0A  SOUND_MIXER_READ_ALTPCM	int *
0x80044D0B  SOUND_MIXER_READ_RECLEV	int *
0x80044D0C  SOUND_MIXER_READ_IGAIN		int *
0x80044D0D  SOUND_MIXER_READ_OGAIN		int *
0x80044D0E  SOUND_MIXER_READ_LINE1		int *
0x80044D0F  SOUND_MIXER_READ_LINE2		int *
0x80044D10  SOUND_MIXER_READ_LINE3		int *
0x80044D1C  SOUND_MIXER_READ_MUTE		int *
0x80044D1D  SOUND_MIXER_READ_ENHANCE	int *
0x80044D1E  SOUND_MIXER_READ_LOUD		int *
0x80044DFF  SOUND_MIXER_READ_RECSRC	int *
0x80044DFE  SOUND_MIXER_READ_DEVMASK	int *
0x80044DFD  SOUND_MIXER_READ_RECMASK	int *
0x80044DFB  SOUND_MIXER_READ_STEREODEVS	int *
0x80044DFC  SOUND_MIXER_READ_CAPS		int *
0xC0044D00  SOUND_MIXER_WRITE_VOLUME	int *				// I-O
0xC0044D01  SOUND_MIXER_WRITE_BASS		int *				// I-O
0xC0044D02  SOUND_MIXER_WRITE_TREBLE	int *				// I-O
0xC0044D03  SOUND_MIXER_WRITE_SYNTH	int *				// I-O
0xC0044D04  SOUND_MIXER_WRITE_PCM		int *				// I-O
0xC0044D05  SOUND_MIXER_WRITE_SPEAKER	int *				// I-O
0xC0044D06  SOUND_MIXER_WRITE_LINE		int *				// I-O
0xC0044D07  SOUND_MIXER_WRITE_MIC		int *				// I-O
0xC0044D08  SOUND_MIXER_WRITE_CD		int *				// I-O
0xC0044D09  SOUND_MIXER_WRITE_IMIX		int *				// I-O
0xC0044D0A  SOUND_MIXER_WRITE_ALTPCM	int *				// I-O
0xC0044D0B  SOUND_MIXER_WRITE_RECLEV	int *				// I-O
0xC0044D0C  SOUND_MIXER_WRITE_IGAIN	int *				// I-O
0xC0044D0D  SOUND_MIXER_WRITE_OGAIN	int *				// I-O
0xC0044D0E  SOUND_MIXER_WRITE_LINE1	int *				// I-O
0xC0044D0F  SOUND_MIXER_WRITE_LINE2	int *				// I-O
0xC0044D10  SOUND_MIXER_WRITE_LINE3	int *				// I-O
0xC0044D1C  SOUND_MIXER_WRITE_MUTE		int *				// I-O
0xC0044D1D  SOUND_MIXER_WRITE_ENHANCE	int *				// I-O
0xC0044D1E  SOUND_MIXER_WRITE_LOUD		int *				// I-O
0xC0044DFF  SOUND_MIXER_WRITE_RECSRC	int *				// I-O
// <include/linux/umsdos_fs.h>
0x000004D2  UMSDOS_READDIR_DOS	struct umsdos_ioctl *		// I-O
0x000004D3  UMSDOS_UNLINK_DOS		const struct umsdos_ioctl *
0x000004D4  UMSDOS_RMDIR_DOS		const struct umsdos_ioctl *
0x000004D5  UMSDOS_STAT_DOS		struct umsdos_ioctl *		// I-O
0x000004D6  UMSDOS_CREAT_EMD		const struct umsdos_ioctl *
0x000004D7  UMSDOS_UNLINK_EMD		const struct umsdos_ioctl *
0x000004D8  UMSDOS_READDIR_EMD	struct umsdos_ioctl *		// I-O
0x000004D9  UMSDOS_GETVERSION		struct umsdos_ioctl *
0x000004DA  UMSDOS_INIT_EMD		void
0x000004DB  UMSDOS_DOS_SETUP		const struct umsdos_ioctl *
0x000004DC  UMSDOS_RENAME_DOS		const struct umsdos_ioctl *
// <include/linux/vt.h>
0x00005600  VT_OPENQRY			int *
0x00005601  VT_GETMODE			struct vt_mode *
0x00005602  VT_SETMODE			const struct vt_mode *
0x00005603  VT_GETSTATE			struct vt_stat *
0x00005604  VT_SENDSIG			void
0x00005605  VT_RELDISP			int
0x00005606  VT_ACTIVATE			int
0x00005607  VT_WAITACTIVE		int
0x00005608  VT_DISALLOCATE		int
0x00005609  VT_RESIZE			const struct vt_sizes *
0x0000560A  VT_RESIZEX			const struct vt_consize *
// Arguments supplémentaires
Certains ioctls utilisent un pointeur sur une structure contenant
des pointeurs supplémentaires.
Les voici par ordre alphabétique.
CDROMREADAUDIO prend un pointeur du type const struct cdrom_read_audio *.
Le champ buf pointe sur un tampon de sortie de longueur 'nframes * CD_FRAMESIZE_RAW'.
CDROMREADCOOKED, CDROMREADMODE1, CDROMREADMODE2 et CDROMREADRAW
prennent un pointeur d'entrée const struct cdrom_msf *.
Ils utilisent le même pointeur en sortie en tant que char [].
La longueur dépend de l'action.
Pour CDROMREADMODE1, la plupart des pilotes de périphériques utilisent
à la place (les deux valent 2048).
	CDROMREADCOOKED         char [CD_FRAMESIZE]
	CDROMREADMODE1          char [CD_FRAMESIZE ou OPT_BLOCKSIZE]
	CDROMREADMODE2          char [CD_FRAMESIZE_RAW0]
	CDROMREADRAW            char [CD_FRAMESIZE_RAW]
EQL_ENSLAVE, EQL_EMANCIPATE, EQL_GETSLAVECFG, EQL_SETSLAVECFG,
EQL_GETMASTERCFG, et EQL_SETMASTERCFG prennent une struct ifreq *.
Le champ ifr_data est un pointeur sur une autre structure :
	EQL_ENSLAVE           const struct slaving_request *
	EQL_EMANCIPATE        const struct slaving_request *
	EQL_GETSLAVECFG       struct slave_config *		// I-O
	EQL_SETSLAVECFG       const struct slave_config *
	EQL_GETMASTERCFG      struct master_config *
	EQL_SETMASTERCFG      const struct master_config *
FDRAWCMD prend une struct floppy raw_cmd *.
Si  'flags & FD_RAW_WRITE' est non-nul, alors data pointe
sur un tampon d'entrée de longueur length.
Si  'flags & FD_RAW_READ' est non-nul, alors data pointe
sur un tampon de sortie de longueur length'.
GIO_FONTX et PIO_FONTX prennent une struct console_font_desc *
et une const struct console_font_desc *, respectivement.
chardata pointe sur un tampon char [charcount].
C'est un tampon de sortie pour GIO_FONTX et d'entrée pour PIO_FONTX.
GIO_UNIMAP et PIO_UNIMAP prennent struct unimapdesc *
et une const struct unimapdesc *, respectivement.
entries pointe  sur un tampon struct unipair [entry_ct].
C'est un tampon de sortie pour GIO_UNIMAP
et un tampon d'entrée pour PIO_UNIMAP.
KDADDIO, KDDELIO, KDDISABIO, et KDENABIO valident
ou invalident les accès aux ports d'entrée-sortie.
Ce sont surtout des alternatives d'interface à ioperm.
KDMAPDISP et KDUNMAPDISP valident et invalident
la projection en mémoire des ports d'entrée-sortie.
Ils ne sont pas implémentés dans le noyau.
SCSI_IOCTL_PROBE_HOST prend un pointeur d'entrée
const int *, qui correspond à une longueur.
Il utilise le même pointeur en sortie en tant que tampon
char [] de cette longueur.
SIOCADDRT et SIOCDELRT prennent un pointeur qui dépend du protocole :
	Most protocols    const struct rtentry *
	AX.25             const struct ax25_route *
	NET/ROM           const struct nr_route_struct *
SIOCGIFCONF prend une struct ifconf *.
Le champ ifc_buf pointe sur un tampon de longueur ifc_len octets,
dans lequel le noyau écrit une liste de type struct ifreq [].
SIOCSIFHWADDR prend un pointeur d'entrée
dont le type dépend du protocole :
	Most protocols   const struct ifreq *
	AX.25            const char [AX25_ADDR_LEN]
TIOCLINUX prend un const char *.
Il utilise ceci pour distinguer entre différent cas.
Dans la table ci-dessous, 'N + foo' signifie 'foo'
après un remplissage de N octets.
struct selection est définie implicitement dans
drivers/char/selection.c.
	TIOCLINUX-2             1 + const struct selection *
	TIOCLINUX-3             void
	TIOCLINUX-4             void
	TIOCLINUX-5             4 + const struct { long [8]; } *
	TIOCLINUX-6             char *
	TIOCLINUX-7             char *
	TIOCLINUX-10            1 + const char *
// IOCTLS DUPLIQUÉS
Cette liste n'inclut pas les ioctls dans l'intervalle entre
SIOCDEVPRIVATE et SIOCPROTOPRIVATE.
0x00000001  FDSETPRM			FIBMAP
0x00000002  FDDEFPRM			FIGETBSZ
0x00005382  CDROMAUDIOBUFSIZ		SCSI_IOCTL_GET_IDLUN
0x00005402  SNDCTL_TMR_START		TCSETS
0x00005403  SNDCTL_TMR_STOP		TCSETSW
0x00005404  SNDCTL_TMR_CONTINUE		TCSETSF

VOIR AUSSI
ioctl(2)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 16 octobre 1996 et révisée le 17 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 ioctl_list ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.