Blame view

include/asm-sh64/termios.h 2.7 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
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
41
42
43
44
45
46
47
48
49
50
51
  #ifndef __ASM_SH64_TERMIOS_H
  #define __ASM_SH64_TERMIOS_H
  
  /*
   * 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.
   *
   * include/asm-sh64/termios.h
   *
   * Copyright (C) 2000, 2001  Paolo Alberelli
   *
   */
  
  #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 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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
  #ifdef __KERNEL__
  
  /*	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; \
  }
  
  #define user_termio_to_kernel_termios(termios, 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); \
  	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); \
  })
  
  #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios))
  #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios))
  
  #endif	/* __KERNEL__ */
  
  #endif	/* __ASM_SH64_TERMIOS_H */