Blame view

include/asm-x86/termios.h 3.01 KB
77ef50a52   Vegard Nossum   x86: consolidate ...
1
2
  #ifndef ASM_X86__TERMIOS_H
  #define ASM_X86__TERMIOS_H
003a46cff   Thomas Gleixner   x86: unify some m...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  
  #include <asm/termbits.h>
  #include <asm/ioctls.h>
  
  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 */
  	unsigned char c_line;		/* line discipline */
  	unsigned char c_cc[NCC];	/* control characters */
  };
  
  /* modem lines */
  #define TIOCM_LE	0x001
  #define TIOCM_DTR	0x002
  #define TIOCM_RTS	0x004
  #define TIOCM_ST	0x008
  #define TIOCM_SR	0x010
  #define TIOCM_CTS	0x020
  #define TIOCM_CAR	0x040
  #define TIOCM_RNG	0x080
  #define TIOCM_DSR	0x100
  #define TIOCM_CD	TIOCM_CAR
  #define TIOCM_RI	TIOCM_RNG
  #define TIOCM_OUT1	0x2000
  #define TIOCM_OUT2	0x4000
  #define TIOCM_LOOP	0x8000
  
  /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
96a388de5   Thomas Gleixner   i386/x86_64: move...
41
  #ifdef __KERNEL__
003a46cff   Thomas Gleixner   x86: unify some m...
42

f8a4c3b52   Dave Miller   tty: fix tty netw...
43
  #include <asm/uaccess.h>
003a46cff   Thomas Gleixner   x86: unify some m...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  /*	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=^U	werase=^W	lnext=^V
  	eol2=\0
  */
  #define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
  
  /*
   * Translate a "termio" structure into a "termios". Ugh.
   */
  #define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
  	unsigned short __tmp; \
  	get_user(__tmp,&(termio)->x); \
  	*(unsigned short *) &(termios)->x = __tmp; \
  }
f8a4c3b52   Dave Miller   tty: fix tty netw...
60
61
62
63
64
65
66
67
68
  static inline int user_termio_to_kernel_termios(struct ktermios *termios,
  						struct termio __user *termio)
  {
  	SET_LOW_TERMIOS_BITS(termios, termio, c_iflag);
  	SET_LOW_TERMIOS_BITS(termios, termio, c_oflag);
  	SET_LOW_TERMIOS_BITS(termios, termio, c_cflag);
  	SET_LOW_TERMIOS_BITS(termios, termio, c_lflag);
  	return copy_from_user(termios->c_cc, termio->c_cc, NCC);
  }
003a46cff   Thomas Gleixner   x86: unify some m...
69
70
71
72
  
  /*
   * Translate a "termios" structure into a "termio". Ugh.
   */
f8a4c3b52   Dave Miller   tty: fix tty netw...
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  static inline int kernel_termios_to_user_termio(struct termio __user *termio,
  					    struct ktermios *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);
  	return copy_to_user((termio)->c_cc, (termios)->c_cc, NCC);
  }
  
  static inline int user_termios_to_kernel_termios(struct ktermios *k,
  						 struct termios2 __user *u)
  {
  	return copy_from_user(k, u, sizeof(struct termios2));
  }
  
  static inline int kernel_termios_to_user_termios(struct termios2 __user *u,
  						 struct ktermios *k)
  {
  	return copy_to_user(u, k, sizeof(struct termios2));
  }
  
  static inline int user_termios_to_kernel_termios_1(struct ktermios *k,
  						   struct termios __user *u)
  {
  	return copy_from_user(k, u, sizeof(struct termios));
  }
  
  static inline int kernel_termios_to_user_termios_1(struct termios __user *u,
  						   struct ktermios *k)
  {
  	return copy_to_user(u, k, sizeof(struct termios));
  }
003a46cff   Thomas Gleixner   x86: unify some m...
107
108
  
  #endif	/* __KERNEL__ */
77ef50a52   Vegard Nossum   x86: consolidate ...
109
  #endif /* ASM_X86__TERMIOS_H */