|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef _LINUX_TERMIOS_CONV_H | 
|  | #define _LINUX_TERMIOS_CONV_H | 
|  |  | 
|  | #include <linux/uaccess.h> | 
|  | #include <asm/termios.h> | 
|  |  | 
|  | /*	intr=^C		quit=^\		erase=del	kill=^U | 
|  | eof=^D		vtime=\0	vmin=\1		sxtc=\0 | 
|  | start=^Q	stop=^S		susp=^Z		eol=\0 | 
|  | reprint=^R	discard=^O	werase=^W	lnext=^V | 
|  | eol2=\0 | 
|  | */ | 
|  |  | 
|  | #ifdef VDSUSP | 
|  | #define INIT_C_CC_VDSUSP_EXTRA [VDSUSP] = 'Y'-0x40, | 
|  | #else | 
|  | #define INIT_C_CC_VDSUSP_EXTRA | 
|  | #endif | 
|  |  | 
|  | #define INIT_C_CC {		\ | 
|  | [VINTR] = 'C'-0x40,	\ | 
|  | [VQUIT] = '\\'-0x40,	\ | 
|  | [VERASE] = '\177',	\ | 
|  | [VKILL] = 'U'-0x40,	\ | 
|  | [VEOF] = 'D'-0x40,	\ | 
|  | [VSTART] = 'Q'-0x40,	\ | 
|  | [VSTOP] = 'S'-0x40,	\ | 
|  | [VSUSP] = 'Z'-0x40,	\ | 
|  | [VREPRINT] = 'R'-0x40,	\ | 
|  | [VDISCARD] = 'O'-0x40,	\ | 
|  | [VWERASE] = 'W'-0x40,	\ | 
|  | [VLNEXT] = 'V'-0x40,	\ | 
|  | INIT_C_CC_VDSUSP_EXTRA	\ | 
|  | [VMIN] = 1 } | 
|  |  | 
|  | int user_termio_to_kernel_termios(struct ktermios *, struct termio __user *); | 
|  | int kernel_termios_to_user_termio(struct termio __user *, struct ktermios *); | 
|  | #ifdef TCGETS2 | 
|  | int user_termios_to_kernel_termios(struct ktermios *, struct termios2 __user *); | 
|  | int kernel_termios_to_user_termios(struct termios2 __user *, struct ktermios *); | 
|  | int user_termios_to_kernel_termios_1(struct ktermios *, struct termios __user *); | 
|  | int kernel_termios_to_user_termios_1(struct termios __user *, struct ktermios *); | 
|  | #else /* TCGETS2 */ | 
|  | int user_termios_to_kernel_termios(struct ktermios *, struct termios __user *); | 
|  | int kernel_termios_to_user_termios(struct termios __user *, struct ktermios *); | 
|  | #endif /* TCGETS2 */ | 
|  |  | 
|  | #endif /* _LINUX_TERMIOS_CONV_H */ |