summaryrefslogtreecommitdiff
path: root/man2/ioctl_list.2
blob: d0d662f57c9712078fe86698a7e5dcc409dc94a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
.\" Ioctl List 1.3.27 is copyright 1995 by Michael Elizabeth Chastain.
.\" Michael Elizabeth Chastain
.\" <mec@duracef.shout.net>
.\"
.\" %%%LICENSE_START(GPLv2_MISC)
.\" It is licensed under the Gnu Public License, Version 2.
.\" %%%LICENSE_END
.\"
.\" Ioctl List 1.3.27
.\" Sun 17 Sep 1995
.\"
.\" // Copyright
.\"
.\"
.\"
.\" // Change Log
.\"
.\" 1.3.27	421 ioctls.
.\" 	Type information for non-pointer args.
.\" 	SIOCDEVPRIVATE, SIOCPROTOPRIVATE ioctls.
.\" 	Descriptions of extended arguments.
.\"
.\" 1.2.9	365 ioctls.
.\" 	First public version.
.\"
.\"
.\" 2007-12-29 Alain Portal <aportal@univ-montp2.fr> and Michael Kerrisk
.\"     <mtk.manpages@gmail.com>:
.\"          Various formatting improvements
.TH IOCTL_LIST 2 2013-09-17 "Linux" "Linux Programmer's Manual"
.SH NAME
ioctl_list \- list of ioctl calls in Linux/i386 kernel
.SH DESCRIPTION
This is Ioctl List 1.3.27, a list of ioctl calls in Linux/i386 kernel
1.3.27.
It contains 421 ioctls from
.IR </usr/include/{asm,linux}/*.h> .
For each ioctl, its numerical value, its name, and its argument
type are given.
.PP
An argument type of
.I "const struct foo\ *"
means the argument is input to the kernel.
.I "struct foo\ *"
means the kernel outputs the argument.
If the kernel uses the argument for both input and output, this is
marked with \fI//\ I-O\fP.
.PP
Some ioctls take more arguments or return more values than a single
structure.
These are marked \fI//\ MORE\fP and documented further in a
separate section.
.PP
This list is very incomplete.
.SS ioctl structure
.\" added two sections - aeb
Ioctl command values are 32-bit constants.
In principle these constants are completely arbitrary, but people have
tried to build some structure into them.
.LP
The old Linux situation was that of mostly 16-bit constants, where the
last byte is a serial number, and the preceding byte(s) give a type
indicating the driver.
Sometimes the major number was used: 0x03
for the
.B HDIO_*
ioctls, 0x06 for the
.B LP*
ioctls.
And sometimes
one or more ASCII letters were used.
For example,
.B TCGETS
has value
0x00005401, with 0x54 = \(aqT\(aq indicating the terminal driver, and
.B CYGETTIMEOUT
has value 0x00435906, with 0x43 0x59 = \(aqC\(aq \(aqY\(aq
indicating the cyclades driver.
.LP
Later (0.98p5) some more information was built into the number.
One has 2 direction bits
(00: none, 01: write, 10: read, 11: read/write)
followed by 14 size bits (giving the size of the argument),
followed by an 8-bit type (collecting the ioctls in groups
for a common purpose or a common driver), and an 8-bit
serial number.
.LP
The macros describing this structure live in
.I <asm/ioctl.h>
and are
.B _IO(type,nr)
and
.BR "{_IOR,_IOW,_IOWR}(type,nr,size)" .
They use
.I sizeof(size)
so that size is a
misnomer here: this third argument is a data type.
.LP
Note that the size bits are very unreliable: in lots of cases
they are wrong, either because of buggy macros using
.IR sizeof(sizeof(struct)) ,
or because of legacy values.
.LP
Thus, it seems that the new structure only gave disadvantages:
it does not help in checking, but it causes varying values
for the various architectures.
.SH RETURN VALUE
Decent ioctls return 0 on success and \-1 on error, while
any output value is stored via the argument.
However,
quite a few ioctls in fact return an output value.
This is not yet indicated below.

// Main table.

// <include/asm-i386/socket.h>
.TS
l l l.
0x00008901	FIOSETOWN	const int *
0x00008902	SIOCSPGRP	const int *
0x00008903	FIOGETOWN	int *
0x00008904	SIOCGPGRP	int *
0x00008905	SIOCATMAR	int *
0x00008906	SIOCGSTAMP	timeval *
.TE

// <include/asm-i386/termios.h>
.TS
l l l l.
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 *	// MORE
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 termios *
0x00005458	TIOCSERGSTRUCT	struct async_struct *
0x00005459	TIOCSERGETLSR	int *
.TE
.\" Some tables are split into two or more to avoid the warning:
.\" "table wider than line width".  Some lines are to long to fit
.\" on one line on an 80 columns console
.TS
l l l.
0x0000545A	TIOCSERGETMULTI	struct serial_multiport_struct *
0x0000545B	TIOCSERSETMULTI	const struct serial_multiport_struct *
.TE

// <include/linux/ax25.h>
.TS
l l l l.
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
.TE
.TS
l l l.
0x000089E6	SIOCAX25SETPARMS	const struct ax25_parms_struct *
.TE

// <include/linux/cdk.h>
.TS
l l l.
0x00007314	STL_BINTR	void
0x00007315	STL_BSTART	void
0x00007316	STL_BSTOP	void
0x00007317	STL_BRESET	void
.TE

// <include/linux/cdrom.h>
.TS
l l l.
0x00005301	CDROMPAUSE	void
0x00005302	CDROMRESUME	void
0x00005303	CDROMPLAYMSF	const struct cdrom_msf *
0x00005304	CDROMPLAYTRKIND	const struct cdrom_ti *
0x00005305	CDROMREADTOCHDR	struct cdrom_tochdr *
.TE
.TS
l l l l.
0x00005306	CDROMREADTOCENTRY	struct cdrom_tocentry *	// I-O
.TE
.TS
l l l l.
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 *	// MORE
0x0000530D	CDROMREADMODE1	const struct cdrom_msf *	// MORE
0x0000530E	CDROMREADAUDIO	const struct cdrom_read_audio *	// MORE
0x0000530F	CDROMEJECT_SW	int
.TE
.TS
l l l l.
0x00005310	CDROMMULTISESSION	struct cdrom_multisession *	// I-O
.TE
.TS
l l l l.
0x00005311	CDROM_GET_UPC	struct { char [8]; } *
0x00005312	CDROMRESET	void
0x00005313	CDROMVOLREAD	struct cdrom_volctrl *
0x00005314	CDROMREADRAW	const struct cdrom_msf *	// MORE
0x00005315	CDROMREADCOOKED	const struct cdrom_msf *	// MORE
0x00005316	CDROMSEEK	const struct cdrom_msf *
.TE

// <include/linux/cm206.h>
.TS
l l l.
0x00002000	CM206CTL_GET_STAT	int
0x00002001	CM206CTL_GET_LAST_STAT	int
.TE

// <include/linux/cyclades.h>
.TS
l l l.
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
.TE

// <include/linux/ext2_fs.h>
.TS
l l l.
0x80046601	EXT2_IOC_GETFLAGS	int *
0x40046602	EXT2_IOC_SETFLAGS	const int *
0x80047601	EXT2_IOC_GETVERSION	int *
0x40047602	EXT2_IOC_SETVERSION	const int *
.TE

// <include/linux/fd.h>
.TS
l l l.
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 *
.TE
.TS
l l l l.
0x0000001E	FDRAWCMD	struct floppy_raw_cmd *	// MORE // I-O
0x00000028	FDTWADDLE	void
.TE

// <include/linux/fs.h>
.TS
l l l l.
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 *
.TE

// <include/linux/hdreg.h>
.TS
l l l l.
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
.TE

// <include/linux/if_eql.h>
.TS
l l l l.
0x000089F0	EQL_ENSLAVE	struct ifreq *	// MORE // I-O
0x000089F1	EQL_EMANCIPATE	struct ifreq *	// MORE // I-O
0x000089F2	EQL_GETSLAVECFG	struct ifreq *	// MORE // I-O
0x000089F3	EQL_SETSLAVECFG	struct ifreq *	// MORE // I-O
0x000089F4	EQL_GETMASTRCFG	struct ifreq *	// MORE // I-O
0x000089F5	EQL_SETMASTRCFG	struct ifreq *	// MORE // I-O
.TE

// <include/linux/if_plip.h>
.TS
l l l l.
0x000089F0	SIOCDEVPLIP	struct ifreq *	// I-O
.TE

// <include/linux/if_ppp.h>
.TS
l l l.
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 *
.TE

// <include/linux/ipx.h>
.TS
l l l.
0x000089E0	SIOCAIPXITFCRT	const char *
0x000089E1	SIOCAIPXPRISLT	const char *
0x000089E2	SIOCIPXCFGDATA	struct ipx_config_data *
.TE

// <include/linux/kd.h>
.TS
l l l.
0x00004B60	GIO_FONT	struct { char [8192]; } *
0x00004B61	PIO_FONT	const struct { char [8192]; } *
.TE
.TS
l2 l2 l2 l.
0x00004B6B	GIO_FONTX	struct console_font_desc *	// MORE // I-O
0x00004B6C	PIO_FONTX	const struct console_font_desc *	//MORE
.TE
.TS
l l l.
0x00004B70	GIO_CMAP	struct { char [48]; } *
0x00004B71	PIO_CMAP	const struct { char [48]; }
.TE
.TS
l l l l.
0x00004B2F	KIOCSOUND	int
0x00004B30	KDMKTONE	int
0x00004B31	KDGETLED	char *
0x00004B32	KDSETLED	int
0x00004B33	KDGKBTYPE	char *
0x00004B34	KDADDIO	int	// MORE
0x00004B35	KDDELIO	int	// MORE
0x00004B36	KDENABIO	void	// MORE
0x00004B37	KDDISABIO	void	// MORE
0x00004B3A	KDSETMODE	int
0x00004B3B	KDGETMODE	int *
0x00004B3C	KDMAPDISP	void	// MORE
0x00004B3D	KDUNMAPDISP	void	// MORE
0x00004B40	GIO_SCRNMAP	struct { char [E_TABSZ]; } *
.TE
.TS
l l l.
0x00004B41	PIO_SCRNMAP	const struct { char [E_TABSZ]; } *
0x00004B69	GIO_UNISCRNMAP	struct { short [E_TABSZ]; } *
0x00004B6A	PIO_UNISCRNMAP	const struct { short [E_TABSZ]; } *
.TE
.TS
l l l l.
0x00004B66	GIO_UNIMAP	struct unimapdesc *	// MORE // I-O
0x00004B67	PIO_UNIMAP	const struct unimapdesc *	// MORE
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
.TE

// <include/linux/lp.h>
.TS
l l l.
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 *
.TE

// <include/linux/mroute.h>
.TS
l l l l.
0x000089E0	SIOCGETVIFCNT	struct sioc_vif_req *	// I-O
0x000089E1	SIOCGETSGCNT	struct sioc_sg_req *	// I-O
.TE

// <include/linux/msdos_fs.h>
.TS
l l l l.
0x82307201	VFAT_IOCTL_READDIR_BOTH	struct dirent [2]
0x82307202	VFAT_IOCTL_READDIR_SHORT	struct dirent [2]
0x80047210	FAT_IOCTL_GET_ATTRIBUTES	__u32 *
0x40047211	FAT_IOCTL_SET_ATTRIBUTES	const __u32 *
.TE

// <include/linux/mtio.h>
.TS
l l l.
0x40086D01	MTIOCTOP	const struct mtop *
0x801C6D02	MTIOCGET	struct mtget *
0x80046D03	MTIOCPOS	struct mtpos *
0x80206D04	MTIOCGETCONFIG	struct mtconfiginfo *
0x40206D05	MTIOCSETCONFIG	const struct mtconfiginfo *
.TE

// <include/linux/netrom.h>
.TS
l l l l.
0x000089E0	SIOCNRGETPARMS	struct nr_parms_struct *	// I-O
0x000089E1	SIOCNRSETPARMS	const struct nr_parms_struct *
0x000089E2	SIOCNRDECOBS	void
0x000089E3	SIOCNRRTCTL	const int *
.TE

// <include/linux/sbpcd.h>
.TS
l l l.
0x00009000	DDIOCSDBG	const int *
0x00005382	CDROMAUDIOBUFSIZ	int
.TE

// <include/linux/scc.h>
.TS
l l l l.
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 *
.TE

// <include/linux/scsi.h>
.TS
l l l.
0x00005382	SCSI_IOCTL_GET_IDLUN	struct { int [2]; } *
0x00005383	SCSI_IOCTL_TAGGED_ENABLE	void
0x00005384	SCSI_IOCTL_TAGGED_DISABLE	void
.TE
.TS
l l l l.
0x00005385	SCSI_IOCTL_PROBE_HOST	const int *	// MORE
.TE

// <include/linux/smb_fs.h>
.TS
l l l.
0x80027501	SMB_IOC_GETMOUNTUID	uid_t *
.TE

// <include/linux/sockios.h>
.TS
l l l l.
0x0000890B	SIOCADDRT	const struct rtentry *	// MORE
0x0000890C	SIOCDELRT	const struct rtentry *	// MORE
0x00008910	SIOCGIFNAME	char []
0x00008911	SIOCSIFLINK	void
0x00008912	SIOCGIFCONF	struct ifconf *	// MORE // 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 *
.TE
.TS
l l l l.
0x00008923	OLD_SIOCGIFHWADDR	struct ifreq *	// I-O
0x00008924	SIOCSIFHWADDR	const struct ifreq *	// MORE
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 *
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 *
.TE

// <include/linux/soundcard.h>
.TS
l l l.
0x00005100	SNDCTL_SEQ_RESET	void
0x00005101	SNDCTL_SEQ_SYNC	void
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
0x40285107	SNDCTL_FM_LOAD_INSTR	const struct sbi_instrument *
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
0x40085112	SNDCTL_SEQ_OUTOFBAND	const struct seq_event_rec *
.TE
.TS
l l l l.
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 *
.TE
.TS
l l l l.
0xC0216D02	SNDCTL_MIDI_MPUCMD	struct mpu_command_rec *	// I-O
.TE
.TS
l l l l.
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
.TE
.TS
l l l.
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 *
.TE
.TS
l l l l.
0xC0144302	SNDCTL_COPR_RDATA	struct copr_debug_buf *	// I-O
0xC0144303	SNDCTL_COPR_RCODE	struct copr_debug_buf *	// I-O
.TE
.TS
l l l.
0x40144304	SNDCTL_COPR_WDATA	const struct copr_debug_buf *
0x40144305	SNDCTL_COPR_WCODE	const struct copr_debug_buf *
.TE
.TS
l l l l.
0xC0144306	SNDCTL_COPR_RUN	struct copr_debug_buf *	// I-O
0xC0144307	SNDCTL_COPR_HALT	struct copr_debug_buf *	// I-O
.TE
.TS
l l l.
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 *
.TE
.TS
l l l l.
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
.TE

// <include/linux/umsdos_fs.h>
.TS
l l l l.
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 *
.TE

// <include/linux/vt.h>
.TS
l l l.
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 *
.TE

// More arguments.
Some ioctl's take a pointer to a structure which contains additional
pointers.
These are documented here in alphabetical order.

.B CDROMREADAUDIO
takes an input pointer
.IR "const struct cdrom_read_audio\ *" .
The
.I buf
field points to an output buffer of length
.IR "nframes\ * CD_FRAMESIZE_RAW" .

.BR CDROMREADCOOKED ,
.BR CDROMREADMODE1 ,
.BR CDROMREADMODE2 ,
and
.B CDROMREADRAW
take an input pointer
.IR "const struct cdrom_msf\ *" .
They use the same pointer as an output pointer to
.IR "char []" .
The length varies by request.
For
.BR CDROMREADMODE1 ,
most drivers use CD_FRAMESIZE, but the Optics Storage
driver uses OPT_BLOCKSIZE instead (both have the numerical value
2048).
.nf

    CDROMREADCOOKED    char [CD_FRAMESIZE]
    CDROMREADMODE1     char [CD_FRAMESIZE or OPT_BLOCKSIZE]
    CDROMREADMODE2     char [CD_FRAMESIZE_RAW0]
    CDROMREADRAW       char [CD_FRAMESIZE_RAW]

.fi
.BR EQL_ENSLAVE ,
.BR EQL_EMANCIPATE ,
.BR EQL_GETSLAVECFG ,
.BR EQL_SETSLAVECFG ,
.BR EQL_GETMASTERCFG ,
and
.B EQL_SETMASTERCFG
take a
.IR "struct ifreq\ *" .
The
.I ifr_data
field is a pointer to another structure as follows:
.nf

    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 *

.fi
.B FDRAWCMD
takes a
.IR "struct floppy raw_cmd\ *" .
If
.I flags & FD_RAW_WRITE
is nonzero, then
.I data
points to an input buffer of length
.IR length .
If
.I flags & FD_RAW_READ
is nonzero, then
.I data
points to an output buffer of length
.IR length .

.B GIO_FONTX
and
.B PIO_FONTX
take a
.I struct console_font_desc\ *
or a
.IR "const struct console_font_desc\ *" ,
respectively.
.I chardata
points to a buffer of
.IR "char [charcount]" .
This is an output buffer for
.B GIO_FONTX
and an input buffer for
.BR PIO_FONTX .

.B GIO_UNIMAP
and
.B PIO_UNIMAP
take a
.I "struct unimapdesc\ *"
or a
.IR "const struct unimapdesc\ *" ,
respectively.
.I entries
points to a buffer of
.IR "struct unipair [entry_ct]" .
This is an output buffer for
.B GIO_UNIMAP
and an input buffer for
.BR PIO_UNIMAP .

KDADDIO, KDDELIO, KDDISABIO, and KDENABIO enable or disable access to
I/O ports.
They are essentially alternate interfaces to 'ioperm'.

.B KDMAPDISP
and
.B KDUNMAPDISP
enable or disable memory mappings or I/O port access.
They are not implemented in the kernel.

.B SCSI_IOCTL_PROBE_HOST
takes an input pointer
.IR "const int\ *" ,
which is a length.
It uses the same pointer as an output pointer to a
.I char []
buffer of this length.

.B SIOCADDRT
and
.B SIOCDELRT
take an input pointer whose type depends on
the protocol:
.nf

    Most protocols      const struct rtentry *
    AX.25               const struct ax25_route *
    NET/ROM             const struct nr_route_struct *

.fi
.B SIOCGIFCONF
takes a
.IR "struct ifconf\ *" .
The
.I ifc_buf
field points to a buffer of length
.I ifc_len
bytes, into which the kernel writes a list of type
.IR "struct ifreq []" .

.B SIOCSIFHWADDR
takes an input pointer whose type depends on the protocol:
.nf

    Most protocols      const struct ifreq *
    AX.25               const char [AX25_ADDR_LEN]

.fi
.B TIOCLINUX
takes a
.IR "const char\ *" .
It uses this to distinguish several
independent subcases.
In the table below,
.I N + foo
means
.I foo
after an N-byte pad.
.I struct selection
is implicitly defined in
.IR drivers/char/selection.c
.nf

    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 *

.fi
// Duplicate ioctls

This list does not include ioctls in the range
.B SIOCDEVPRIVATE
and
.BR SIOCPROTOPRIVATE .
.TS
l l l.
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
.TE
.SH SEE ALSO
.BR ioctl (2)