| 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 | |
| 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 |
| 11 | reprint=^R discard=^O werase=^W lnext=^V |
| 12 | eol2=\0 |
| 13 | */ |
| 14 | |
| 15 | #ifdef VDSUSP |
| 16 | #define INIT_C_CC_VDSUSP_EXTRA [VDSUSP] = 'Y'-0x40, |
| 17 | #else |
| 18 | #define |
| 19 | #endif |
| 20 | |
| 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, \ |
| 34 | INIT_C_CC_VDSUSP_EXTRA \ |
| 35 | [VMIN] = 1 } |
| 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 */ |
| 50 | |