2005-04-17 02:20:36 +04:00
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* Copyright ( C ) 1995 , 1996 , 2000 , 2001 by Ralf Baechle
* Copyright ( C ) 2000 , 2001 Silicon Graphics , Inc .
*/
# ifndef _ASM_TERMIOS_H
# define _ASM_TERMIOS_H
# include <asm/termbits.h>
# include <asm/ioctls.h>
struct sgttyb {
char sg_ispeed ;
char sg_ospeed ;
char sg_erase ;
char sg_kill ;
int sg_flags ; /* SGI special - int, not short */
} ;
struct tchars {
char t_intrc ;
char t_quitc ;
char t_startc ;
char t_stopc ;
char t_eofc ;
char t_brkc ;
} ;
struct ltchars {
char t_suspc ; /* stop process signal */
char t_dsuspc ; /* delayed stop process signal */
char t_rprntc ; /* reprint line */
char t_flushc ; /* flush output (toggles) */
char t_werasc ; /* word erase */
char t_lnextc ; /* literal next character */
} ;
/* TIOCGSIZE, TIOCSSIZE not defined yet. Only needed for SunOS source
compatibility anyway . . . */
struct winsize {
unsigned short ws_row ;
unsigned short ws_col ;
unsigned short ws_xpixel ;
unsigned short ws_ypixel ;
} ;
# define NCC 8
struct termio {
unsigned short c_iflag ; /* input mode flags */
unsigned short c_oflag ; /* output mode flags */
unsigned short c_cflag ; /* control mode flags */
unsigned short c_lflag ; /* local mode flags */
char c_line ; /* line discipline */
unsigned char c_cc [ NCCS ] ; /* control characters */
} ;
# ifdef __KERNEL__
# include <linux/module.h>
/*
* intr = ^ C quit = ^ \ erase = del kill = ^ U
* vmin = \ 1 vtime = \ 0 eol2 = \ 0 swtc = \ 0
* start = ^ Q stop = ^ S susp = ^ Z vdsusp =
* reprint = ^ R discard = ^ U werase = ^ W lnext = ^ V
* eof = ^ D eol = \ 0
*/
# define INIT_C_CC "\003\034\177\025\1\0\0\0\021\023\032\0\022\017\027\026\004\0"
# endif
/* modem lines */
# define TIOCM_LE 0x001 /* line enable */
# define TIOCM_DTR 0x002 /* data terminal ready */
# define TIOCM_RTS 0x004 /* request to send */
# define TIOCM_ST 0x010 /* secondary transmit */
# define TIOCM_SR 0x020 /* secondary receive */
# define TIOCM_CTS 0x040 /* clear to send */
# define TIOCM_CAR 0x100 /* carrier detect */
# define TIOCM_CD TIOCM_CAR
# define TIOCM_RNG 0x200 /* ring */
# define TIOCM_RI TIOCM_RNG
# define TIOCM_DSR 0x400 /* data set ready */
# define TIOCM_OUT1 0x2000
# define TIOCM_OUT2 0x4000
# define TIOCM_LOOP 0x8000
# ifdef __KERNEL__
# include <linux/string.h>
/*
* Translate a " termio " structure into a " termios " . Ugh .
*/
# define user_termio_to_kernel_termios(termios, termio) \
( { \
unsigned short tmp ; \
get_user ( tmp , & ( termio ) - > c_iflag ) ; \
( termios ) - > c_iflag = ( 0xffff0000 & ( ( termios ) - > c_iflag ) ) | tmp ; \
get_user ( tmp , & ( termio ) - > c_oflag ) ; \
( termios ) - > c_oflag = ( 0xffff0000 & ( ( termios ) - > c_oflag ) ) | tmp ; \
get_user ( tmp , & ( termio ) - > c_cflag ) ; \
( termios ) - > c_cflag = ( 0xffff0000 & ( ( termios ) - > c_cflag ) ) | tmp ; \
get_user ( tmp , & ( termio ) - > c_lflag ) ; \
( termios ) - > c_lflag = ( 0xffff0000 & ( ( termios ) - > c_lflag ) ) | tmp ; \
get_user ( ( termios ) - > c_line , & ( termio ) - > c_line ) ; \
copy_from_user ( ( termios ) - > c_cc , ( termio ) - > c_cc , NCC ) ; \
} )
/*
* Translate a " termios " structure into a " termio " . Ugh .
*/
# define kernel_termios_to_user_termio(termio, termios) \
( { \
put_user ( ( termios ) - > c_iflag , & ( termio ) - > c_iflag ) ; \
put_user ( ( termios ) - > c_oflag , & ( termio ) - > c_oflag ) ; \
put_user ( ( termios ) - > c_cflag , & ( termio ) - > c_cflag ) ; \
put_user ( ( termios ) - > c_lflag , & ( termio ) - > c_lflag ) ; \
put_user ( ( termios ) - > c_line , & ( termio ) - > c_line ) ; \
copy_to_user ( ( termio ) - > c_cc , ( termios ) - > c_cc , NCC ) ; \
} )
2007-08-11 01:00:20 +04:00
# define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
# define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
# define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
# define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
2005-04-17 02:20:36 +04:00
# endif /* defined(__KERNEL__) */
# endif /* _ASM_TERMIOS_H */