Commit | Line | Data |
---|---|---|
c9874d3f AV |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_TERMIOS_CONV_H | |
3 | #define _LINUX_TERMIOS_CONV_H | |
4 | ||
5 | #include <linux/uaccess.h> | |
6 | #include <asm/termios.h> | |
7 | ||
c9874d3f AV |
8 | /* intr=^C quit=^\ erase=del kill=^U |
9 | eof=^D vtime=\0 vmin=\1 sxtc=\0 | |
10 | start=^Q stop=^S susp=^Z eol=\0 | |
38fc315a | 11 | reprint=^R discard=^O werase=^W lnext=^V |
c9874d3f AV |
12 | eol2=\0 |
13 | */ | |
e7b4c812 AV |
14 | |
15 | #ifdef VDSUSP | |
16 | #define INIT_C_CC_VDSUSP_EXTRA [VDSUSP] = 'Y'-0x40, | |
17 | #else | |
18 | #define INIT_C_CC_VDSUSP_EXTRA | |
19 | #endif | |
20 | ||
d04f9915 AV |
21 | #define INIT_C_CC { \ |
22 | [VINTR] = 'C'-0x40, \ | |
23 | [VQUIT] = '\\'-0x40, \ | |
24 | [VERASE] = '\177', \ | |
25 | [VKILL] = 'U'-0x40, \ | |
26 | [VEOF] = 'D'-0x40, \ | |
27 | [VSTART] = 'Q'-0x40, \ | |
28 | [VSTOP] = 'S'-0x40, \ | |
29 | [VSUSP] = 'Z'-0x40, \ | |
30 | [VREPRINT] = 'R'-0x40, \ | |
31 | [VDISCARD] = 'O'-0x40, \ | |
32 | [VWERASE] = 'W'-0x40, \ | |
33 | [VLNEXT] = 'V'-0x40, \ | |
e7b4c812 | 34 | INIT_C_CC_VDSUSP_EXTRA \ |
d04f9915 | 35 | [VMIN] = 1 } |
c9874d3f AV |
36 | |
37 | int user_termio_to_kernel_termios(struct ktermios *, struct termio __user *); | |
38 | int kernel_termios_to_user_termio(struct termio __user *, struct ktermios *); | |
39 | #ifdef TCGETS2 | |
40 | int user_termios_to_kernel_termios(struct ktermios *, struct termios2 __user *); | |
41 | int kernel_termios_to_user_termios(struct termios2 __user *, struct ktermios *); | |
42 | int user_termios_to_kernel_termios_1(struct ktermios *, struct termios __user *); | |
43 | int kernel_termios_to_user_termios_1(struct termios __user *, struct ktermios *); | |
44 | #else /* TCGETS2 */ | |
45 | int user_termios_to_kernel_termios(struct ktermios *, struct termios __user *); | |
46 | int kernel_termios_to_user_termios(struct termios __user *, struct ktermios *); | |
47 | #endif /* TCGETS2 */ | |
48 | ||
49 | #endif /* _LINUX_TERMIOS_CONV_H */ |