linux_ioctl.h revision 85127
1/*-
2 * Copyright (c) 1999 Marcel Moolenaar
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer
10 *    in this position and unchanged.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 *    derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $FreeBSD: head/sys/compat/linux/linux_ioctl.h 85127 2001-10-19 01:38:10Z des $
29 */
30
31#ifndef _LINUX_IOCTL_H_
32#define	_LINUX_IOCTL_H_
33
34/*
35 * disk
36 */
37#define	LINUX_BLKROSET		0x125d
38#define	LINUX_BLKROGET		0x125e
39#define	LINUX_BLKRRPART		0x125f
40#define	LINUX_BLKGETSIZE	0x1260
41#define	LINUX_BLKFLSBUF		0x1261
42#define	LINUX_BLKRASET		0x1262
43#define	LINUX_BLKRAGET		0x1263
44#define	LINUX_BLKFRASET		0x1264
45#define	LINUX_BLKFRAGET		0x1265
46#define	LINUX_BLKSECTSET	0x1266
47#define	LINUX_BLKSECTGET	0x1267
48#define	LINUX_BLKSSZGET		0x1268
49
50#define	LINUX_IOCTL_DISK_MIN	LINUX_BLKROSET
51#define	LINUX_IOCTL_DISK_MAX	LINUX_BLKSSZGET
52
53/*
54 * cdrom
55 */
56#define	LINUX_CDROMPAUSE	0x5301
57#define	LINUX_CDROMRESUME	0x5302
58#define	LINUX_CDROMPLAYMSF	0x5303
59#define	LINUX_CDROMPLAYTRKIND	0x5304
60#define	LINUX_CDROMREADTOCHDR	0x5305
61#define	LINUX_CDROMREADTOCENTRY	0x5306
62#define	LINUX_CDROMSTOP		0x5307
63#define	LINUX_CDROMSTART	0x5308
64#define	LINUX_CDROMEJECT	0x5309
65#define	LINUX_CDROMVOLCTRL	0x530a
66#define	LINUX_CDROMSUBCHNL	0x530b
67#define	LINUX_CDROMREADMODE2	0x530c
68#define	LINUX_CDROMREADMODE1	0x530d
69#define	LINUX_CDROMREADAUDIO	0x530e
70#define	LINUX_CDROMEJECT_SW	0x530f
71#define	LINUX_CDROMMULTISESSION	0x5310
72#define	LINUX_CDROM_GET_UPC	0x5311
73#define	LINUX_CDROMRESET	0x5312
74#define	LINUX_CDROMVOLREAD	0x5313
75#define	LINUX_CDROMREADRAW	0x5314
76#define	LINUX_CDROMREADCOOKED	0x5315
77#define	LINUX_CDROMSEEK		0x5316
78#define	LINUX_CDROMPLAYBLK	0x5317
79#define	LINUX_CDROMREADALL	0x5318
80#define	LINUX_CDROMCLOSETRAY	0x5319
81#define	LINUX_CDROMLOADFROMSLOT	0x531a
82
83#define	LINUX_IOCTL_CDROM_MIN	LINUX_CDROMPAUSE
84#define	LINUX_IOCTL_CDROM_MAX	LINUX_CDROMLOADFROMSLOT
85
86#define	LINUX_CDROM_LBA		0x01
87#define	LINUX_CDROM_MSF		0x02
88
89/*
90 * console
91 */
92#define	LINUX_KIOCSOUND		0x4B2F
93#define	LINUX_KDMKTONE		0x4B30
94#define	LINUX_KDGETLED		0x4B31
95#define	LINUX_KDSETLED		0x4B32
96#define	LINUX_KDSETMODE		0x4B3A
97#define	LINUX_KDGETMODE		0x4B3B
98#define	LINUX_KDGKBMODE		0x4B44
99#define	LINUX_KDSKBMODE		0x4B45
100#define	LINUX_VT_OPENQRY	0x5600
101#define	LINUX_VT_GETMODE	0x5601
102#define	LINUX_VT_SETMODE	0x5602
103#define	LINUX_VT_GETSTATE	0x5603
104#define	LINUX_VT_RELDISP	0x5605
105#define	LINUX_VT_ACTIVATE	0x5606
106#define	LINUX_VT_WAITACTIVE	0x5607
107
108#define	LINUX_IOCTL_CONSOLE_MIN	LINUX_KIOCSOUND
109#define	LINUX_IOCTL_CONSOLE_MAX	LINUX_VT_WAITACTIVE
110
111#define	LINUX_LED_SCR		0x01
112#define	LINUX_LED_NUM		0x02
113#define	LINUX_LED_CAP		0x04
114
115#define	LINUX_KD_TEXT		0x0
116#define	LINUX_KD_GRAPHICS	0x1
117#define	LINUX_KD_TEXT0		0x2
118#define	LINUX_KD_TEXT1		0x3
119
120#define	LINUX_KBD_RAW		0
121#define	LINUX_KBD_XLATE		1
122#define	LINUX_KBD_MEDIUMRAW	2
123
124/*
125 * socket
126 */
127#define	LINUX_FIOSETOWN		0x8901
128#define	LINUX_SIOCSPGRP		0x8902
129#define	LINUX_FIOGETOWN		0x8903
130#define	LINUX_SIOCGPGRP		0x8904
131#define	LINUX_SIOCATMARK	0x8905
132#define	LINUX_SIOCGSTAMP	0x8906
133#define	LINUX_SIOCGIFCONF	0x8912
134#define	LINUX_SIOCGIFFLAGS	0x8913
135#define	LINUX_SIOCGIFADDR	0x8915
136#define	LINUX_SIOCGIFDSTADDR	0x8917
137#define	LINUX_SIOCGIFBRDADDR	0x8919
138#define	LINUX_SIOCGIFNETMASK	0x891b
139#define	LINUX_SIOCGIFHWADDR	0x8927
140#define	LINUX_SIOCADDMULTI	0x8931
141#define	LINUX_SIOCDELMULTI	0x8932
142
143#define	LINUX_IOCTL_SOCKET_MIN	LINUX_FIOSETOWN
144#define	LINUX_IOCTL_SOCKET_MAX	LINUX_SIOCDELMULTI
145
146/*
147 * Device private ioctl calls
148 */
149#define LINUX_SIOCDEVPRIVATE	0x89F0  /* to 89FF */
150#define LINUX_IOCTL_PRIVATE_MIN	LINUX_SIOCDEVPRIVATE
151#define LINUX_IOCTL_PRIVATE_MAX	LINUX_SIOCDEVPRIVATE+0xf
152
153/*
154 * sound
155 */
156#define	LINUX_SOUND_MIXER_WRITE_VOLUME	0x4d00
157#define	LINUX_SOUND_MIXER_WRITE_BASS	0x4d01
158#define	LINUX_SOUND_MIXER_WRITE_TREBLE	0x4d02
159#define	LINUX_SOUND_MIXER_WRITE_SYNTH	0x4d03
160#define	LINUX_SOUND_MIXER_WRITE_PCM	0x4d04
161#define	LINUX_SOUND_MIXER_WRITE_SPEAKER	0x4d05
162#define	LINUX_SOUND_MIXER_WRITE_LINE	0x4d06
163#define	LINUX_SOUND_MIXER_WRITE_MIC	0x4d07
164#define	LINUX_SOUND_MIXER_WRITE_CD	0x4d08
165#define	LINUX_SOUND_MIXER_WRITE_IMIX	0x4d09
166#define	LINUX_SOUND_MIXER_WRITE_ALTPCM	0x4d0A
167#define	LINUX_SOUND_MIXER_WRITE_RECLEV	0x4d0B
168#define	LINUX_SOUND_MIXER_WRITE_IGAIN	0x4d0C
169#define	LINUX_SOUND_MIXER_WRITE_OGAIN	0x4d0D
170#define	LINUX_SOUND_MIXER_WRITE_LINE1	0x4d0E
171#define	LINUX_SOUND_MIXER_WRITE_LINE2	0x4d0F
172#define	LINUX_SOUND_MIXER_WRITE_LINE3	0x4d10
173#define	LINUX_OSS_GETVERSION		0x4d76
174#define	LINUX_SOUND_MIXER_READ_DEVMASK	0x4dfe
175#define	LINUX_SNDCTL_DSP_RESET		0x5000
176#define	LINUX_SNDCTL_DSP_SYNC		0x5001
177#define	LINUX_SNDCTL_DSP_SPEED		0x5002
178#define	LINUX_SNDCTL_DSP_STEREO		0x5003
179#define	LINUX_SNDCTL_DSP_GETBLKSIZE	0x5004
180#define	LINUX_SNDCTL_DSP_SETBLKSIZE	LINUX_SNDCTL_DSP_GETBLKSIZE
181#define	LINUX_SNDCTL_DSP_SETFMT		0x5005
182#define	LINUX_SOUND_PCM_WRITE_CHANNELS	0x5006
183#define	LINUX_SOUND_PCM_WRITE_FILTER	0x5007
184#define	LINUX_SNDCTL_DSP_POST		0x5008
185#define	LINUX_SNDCTL_DSP_SUBDIVIDE	0x5009
186#define	LINUX_SNDCTL_DSP_SETFRAGMENT	0x500A
187#define	LINUX_SNDCTL_DSP_GETFMTS	0x500B
188#define	LINUX_SNDCTL_DSP_GETOSPACE	0x500C
189#define	LINUX_SNDCTL_DSP_GETISPACE	0x500D
190#define	LINUX_SNDCTL_DSP_NONBLOCK	0x500E
191#define	LINUX_SNDCTL_DSP_GETCAPS	0x500F
192#define	LINUX_SNDCTL_DSP_GETTRIGGER	0x5010
193#define	LINUX_SNDCTL_DSP_SETTRIGGER	LINUX_SNDCTL_DSP_GETTRIGGER
194#define	LINUX_SNDCTL_DSP_GETIPTR	0x5011
195#define	LINUX_SNDCTL_DSP_GETOPTR	0x5012
196#define	LINUX_SNDCTL_DSP_GETODELAY	0x5017
197#define	LINUX_SNDCTL_SEQ_RESET		0x5100
198#define	LINUX_SNDCTL_SEQ_SYNC		0x5101
199#define	LINUX_SNDCTL_SYNTH_INFO		0x5102
200#define	LINUX_SNDCTL_SEQ_CTRLRATE	0x5103
201#define	LINUX_SNDCTL_SEQ_GETOUTCOUNT	0x5104
202#define	LINUX_SNDCTL_SEQ_GETINCOUNT	0x5105
203#define	LINUX_SNDCTL_SEQ_PERCMODE	0x5106
204#define	LINUX_SNDCTL_FM_LOAD_INSTR	0x5107
205#define	LINUX_SNDCTL_SEQ_TESTMIDI	0x5108
206#define	LINUX_SNDCTL_SEQ_RESETSAMPLES	0x5109
207#define	LINUX_SNDCTL_SEQ_NRSYNTHS	0x510A
208#define	LINUX_SNDCTL_SEQ_NRMIDIS	0x510B
209#define	LINUX_SNDCTL_MIDI_INFO		0x510C
210#define	LINUX_SNDCTL_SEQ_TRESHOLD	0x510D
211#define	LINUX_SNDCTL_SYNTH_MEMAVL	0x510E
212
213#define	LINUX_IOCTL_SOUND_MIN	LINUX_SOUND_MIXER_WRITE_VOLUME
214#define	LINUX_IOCTL_SOUND_MAX	LINUX_SNDCTL_SYNTH_MEMAVL
215
216/*
217 * termio
218 */
219#define	LINUX_TCGETS		0x5401
220#define	LINUX_TCSETS		0x5402
221#define	LINUX_TCSETSW		0x5403
222#define	LINUX_TCSETSF		0x5404
223#define	LINUX_TCGETA		0x5405
224#define	LINUX_TCSETA		0x5406
225#define	LINUX_TCSETAW		0x5407
226#define	LINUX_TCSETAF		0x5408
227#define	LINUX_TCSBRK		0x5409
228#define	LINUX_TCXONC		0x540A
229#define	LINUX_TCFLSH		0x540B
230#define	LINUX_TIOCEXCL		0x540C
231#define	LINUX_TIOCNXCL		0x540D
232#define	LINUX_TIOCSCTTY		0x540E
233#define	LINUX_TIOCGPGRP		0x540F
234#define	LINUX_TIOCSPGRP		0x5410
235#define	LINUX_TIOCOUTQ		0x5411
236#define	LINUX_TIOCSTI		0x5412
237#define	LINUX_TIOCGWINSZ	0x5413
238#define	LINUX_TIOCSWINSZ	0x5414
239#define	LINUX_TIOCMGET		0x5415
240#define	LINUX_TIOCMBIS		0x5416
241#define	LINUX_TIOCMBIC		0x5417
242#define	LINUX_TIOCMSET		0x5418
243#define	LINUX_TIOCGSOFTCAR	0x5419
244#define	LINUX_TIOCSSOFTCAR	0x541A
245#define	LINUX_FIONREAD		0x541B
246#define	LINUX_TIOCINQ		FIONREAD
247#define	LINUX_TIOCLINUX		0x541C
248#define	LINUX_TIOCCONS		0x541D
249#define	LINUX_TIOCGSERIAL	0x541E
250#define	LINUX_TIOCSSERIAL	0x541F
251#define	LINUX_TIOCPKT		0x5420
252#define	LINUX_FIONBIO		0x5421
253#define	LINUX_TIOCNOTTY		0x5422
254#define	LINUX_TIOCSETD		0x5423
255#define	LINUX_TIOCGETD		0x5424
256#define	LINUX_TCSBRKP		0x5425
257#define	LINUX_TIOCTTYGSTRUCT	0x5426
258#define	LINUX_FIONCLEX		0x5450
259#define	LINUX_FIOCLEX		0x5451
260#define	LINUX_FIOASYNC		0x5452
261#define	LINUX_TIOCSERCONFIG	0x5453
262#define	LINUX_TIOCSERGWILD	0x5454
263#define	LINUX_TIOCSERSWILD	0x5455
264#define	LINUX_TIOCGLCKTRMIOS	0x5456
265#define	LINUX_TIOCSLCKTRMIOS	0x5457
266
267#define	LINUX_IOCTL_TERMIO_MIN	LINUX_TCGETS
268#define	LINUX_IOCTL_TERMIO_MAX	LINUX_TIOCSLCKTRMIOS
269
270/* arguments for tcflow() and LINUX_TCXONC */
271#define	LINUX_TCOOFF		0
272#define	LINUX_TCOON		1
273#define	LINUX_TCIOFF		2
274#define	LINUX_TCION		3
275
276/* arguments for tcflush() and LINUX_TCFLSH */
277#define	LINUX_TCIFLUSH		0
278#define	LINUX_TCOFLUSH		1
279#define	LINUX_TCIOFLUSH		2
280
281/* line disciplines */
282#define	LINUX_N_TTY		0
283#define	LINUX_N_SLIP		1
284#define	LINUX_N_MOUSE		2
285#define	LINUX_N_PPP		3
286
287/* Linux termio c_cc values */
288#define	LINUX_VINTR		0
289#define	LINUX_VQUIT		1
290#define	LINUX_VERASE		2
291#define	LINUX_VKILL		3
292#define	LINUX_VEOF		4
293#define	LINUX_VTIME		5
294#define	LINUX_VMIN		6
295#define	LINUX_VSWTC		7
296#define	LINUX_NCC		8
297
298/* Linux termios c_cc values */
299#define	LINUX_VSTART		8
300#define	LINUX_VSTOP		9
301#define	LINUX_VSUSP 		10
302#define	LINUX_VEOL		11
303#define	LINUX_VREPRINT		12
304#define	LINUX_VDISCARD		13
305#define	LINUX_VWERASE		14
306#define	LINUX_VLNEXT		15
307#define	LINUX_VEOL2		16
308#define	LINUX_NCCS		19
309
310#define	LINUX_POSIX_VDISABLE	'\0'
311
312/* Linux c_iflag masks */
313#define	LINUX_IGNBRK		0x0000001
314#define	LINUX_BRKINT		0x0000002
315#define	LINUX_IGNPAR		0x0000004
316#define	LINUX_PARMRK		0x0000008
317#define	LINUX_INPCK		0x0000010
318#define	LINUX_ISTRIP		0x0000020
319#define	LINUX_INLCR		0x0000040
320#define	LINUX_IGNCR		0x0000080
321#define	LINUX_ICRNL		0x0000100
322#define	LINUX_IUCLC		0x0000200
323#define	LINUX_IXON		0x0000400
324#define	LINUX_IXANY		0x0000800
325#define	LINUX_IXOFF		0x0001000
326#define	LINUX_IMAXBEL		0x0002000
327
328/* Linux c_oflag masks */
329#define	LINUX_OPOST		0x0000001
330#define	LINUX_OLCUC		0x0000002
331#define	LINUX_ONLCR		0x0000004
332#define	LINUX_OCRNL		0x0000008
333#define	LINUX_ONOCR		0x0000010
334#define	LINUX_ONLRET		0x0000020
335#define	LINUX_OFILL		0x0000040
336#define	LINUX_OFDEL		0x0000080
337#define	LINUX_NLDLY		0x0000100
338
339#define	LINUX_NL0		0x0000000
340#define	LINUX_NL1		0x0000100
341#define	LINUX_CRDLY		0x0000600
342#define	LINUX_CR0		0x0000000
343#define	LINUX_CR1		0x0000200
344#define	LINUX_CR2		0x0000400
345#define	LINUX_CR3		0x0000600
346#define	LINUX_TABDLY		0x0001800
347#define	LINUX_TAB0		0x0000000
348#define	LINUX_TAB1		0x0000800
349#define	LINUX_TAB2		0x0001000
350#define	LINUX_TAB3		0x0001800
351#define	LINUX_XTABS		0x0001800
352#define	LINUX_BSDLY		0x0002000
353#define	LINUX_BS0		0x0000000
354#define	LINUX_BS1		0x0002000
355#define	LINUX_VTDLY		0x0004000
356#define	LINUX_VT0		0x0000000
357#define	LINUX_VT1		0x0004000
358#define	LINUX_FFDLY		0x0008000
359#define	LINUX_FF0		0x0000000
360#define	LINUX_FF1		0x0008000
361
362#define	LINUX_CBAUD		0x0000100f
363#define	LINUX_B0		0x00000000
364#define	LINUX_B50		0x00000001
365#define	LINUX_B75		0x00000002
366#define	LINUX_B110		0x00000003
367#define	LINUX_B134		0x00000004
368#define	LINUX_B150		0x00000005
369#define	LINUX_B200		0x00000006
370#define	LINUX_B300		0x00000007
371#define	LINUX_B600		0x00000008
372#define	LINUX_B1200		0x00000009
373#define	LINUX_B1800		0x0000000a
374#define	LINUX_B2400		0x0000000b
375#define	LINUX_B4800		0x0000000c
376#define	LINUX_B9600		0x0000000d
377#define	LINUX_B19200		0x0000000e
378#define	LINUX_B38400		0x0000000f
379#define	LINUX_EXTA		LINUX_B19200
380#define	LINUX_EXTB		LINUX_B38400
381#define	LINUX_CBAUDEX		0x00001000
382#define	LINUX_B57600		0x00001001
383#define	LINUX_B115200		0x00001002
384
385#define	LINUX_CSIZE		0x00000030
386#define	LINUX_CS5		0x00000000
387#define	LINUX_CS6		0x00000010
388#define	LINUX_CS7		0x00000020
389#define	LINUX_CS8		0x00000030
390#define	LINUX_CSTOPB		0x00000040
391#define	LINUX_CREAD		0x00000080
392#define	LINUX_PARENB		0x00000100
393#define	LINUX_PARODD		0x00000200
394#define	LINUX_HUPCL		0x00000400
395#define	LINUX_CLOCAL		0x00000800
396#define	LINUX_CRTSCTS		0x80000000
397
398/* Linux c_lflag masks */
399#define	LINUX_ISIG		0x00000001
400#define	LINUX_ICANON		0x00000002
401#define	LINUX_XCASE		0x00000004
402#define	LINUX_ECHO		0x00000008
403#define	LINUX_ECHOE		0x00000010
404#define	LINUX_ECHOK		0x00000020
405#define	LINUX_ECHONL		0x00000040
406#define	LINUX_NOFLSH		0x00000080
407#define	LINUX_TOSTOP		0x00000100
408#define	LINUX_ECHOCTL		0x00000200
409#define	LINUX_ECHOPRT		0x00000400
410#define	LINUX_ECHOKE		0x00000800
411#define	LINUX_FLUSHO		0x00001000
412#define	LINUX_PENDIN		0x00002000
413#define	LINUX_IEXTEN		0x00008000
414
415/* serial_struct values for TIOC[GS]SERIAL ioctls */
416#define	LINUX_ASYNC_CLOSING_WAIT_INF  0
417#define	LINUX_ASYNC_CLOSING_WAIT_NONE 65535
418
419#define	LINUX_PORT_UNKNOWN	0
420#define	LINUX_PORT_8250		1
421#define	LINUX_PORT_16450	2
422#define	LINUX_PORT_16550	3
423#define	LINUX_PORT_16550A	4
424#define	LINUX_PORT_CIRRUS	5
425#define	LINUX_PORT_16650	6
426
427#define	LINUX_PORT_MAX		6
428
429#define	LINUX_ASYNC_HUP_NOTIFY		0x0001
430#define	LINUX_ASYNC_FOURPORT		0x0002
431#define	LINUX_ASYNC_SAK			0x0004
432#define	LINUX_ASYNC_SPLIT_TERMIOS	0x0008
433#define	LINUX_ASYNC_SPD_MASK		0x0030
434#define	LINUX_ASYNC_SPD_HI		0x0010
435#define	LINUX_ASYNC_SPD_VHI		0x0020
436#define	LINUX_ASYNC_SPD_CUST		0x0030
437#define	LINUX_ASYNC_SKIP_TEST		0x0040
438#define	LINUX_ASYNC_AUTO_IRQ		0x0080
439#define	LINUX_ASYNC_SESSION_LOCKOUT	0x0100
440#define	LINUX_ASYNC_PGRP_LOCKOUT	0x0200
441#define	LINUX_ASYNC_CALLOUT_NOHUP	0x0400
442#define	LINUX_ASYNC_FLAGS		0x0FFF
443
444/*
445 * This doesn't really belong here, but I can't think of a better
446 * place to put it.
447 */
448int		 linux_ifname(struct ifnet *, char *, size_t);
449
450#endif /* !_LINUX_IOCTL_H_ */
451