~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/parisc/include/asm/termios.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _PARISC_TERMIOS_H
 
2
#define _PARISC_TERMIOS_H
 
3
 
 
4
#include <asm/termbits.h>
 
5
#include <asm/ioctls.h>
 
6
 
 
7
struct winsize {
 
8
        unsigned short ws_row;
 
9
        unsigned short ws_col;
 
10
        unsigned short ws_xpixel;
 
11
        unsigned short ws_ypixel;
 
12
};
 
13
 
 
14
#define NCC 8
 
15
struct termio {
 
16
        unsigned short c_iflag;         /* input mode flags */
 
17
        unsigned short c_oflag;         /* output mode flags */
 
18
        unsigned short c_cflag;         /* control mode flags */
 
19
        unsigned short c_lflag;         /* local mode flags */
 
20
        unsigned char c_line;           /* line discipline */
 
21
        unsigned char c_cc[NCC];        /* control characters */
 
22
};
 
23
 
 
24
/* modem lines */
 
25
#define TIOCM_LE        0x001
 
26
#define TIOCM_DTR       0x002
 
27
#define TIOCM_RTS       0x004
 
28
#define TIOCM_ST        0x008
 
29
#define TIOCM_SR        0x010
 
30
#define TIOCM_CTS       0x020
 
31
#define TIOCM_CAR       0x040
 
32
#define TIOCM_RNG       0x080
 
33
#define TIOCM_DSR       0x100
 
34
#define TIOCM_CD        TIOCM_CAR
 
35
#define TIOCM_RI        TIOCM_RNG
 
36
#define TIOCM_OUT1      0x2000
 
37
#define TIOCM_OUT2      0x4000
 
38
#define TIOCM_LOOP      0x8000
 
39
 
 
40
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
 
41
 
 
42
#ifdef __KERNEL__
 
43
 
 
44
/*      intr=^C         quit=^\         erase=del       kill=^U
 
45
        eof=^D          vtime=\0        vmin=\1         sxtc=\0
 
46
        start=^Q        stop=^S         susp=^Z         eol=\0
 
47
        reprint=^R      discard=^U      werase=^W       lnext=^V
 
48
        eol2=\0
 
49
*/
 
50
#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
 
51
 
 
52
/*
 
53
 * Translate a "termio" structure into a "termios". Ugh.
 
54
 */
 
55
#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
 
56
        unsigned short __tmp; \
 
57
        get_user(__tmp,&(termio)->x); \
 
58
        *(unsigned short *) &(termios)->x = __tmp; \
 
59
}
 
60
 
 
61
#define user_termio_to_kernel_termios(termios, termio) \
 
62
({ \
 
63
        SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
 
64
        SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
 
65
        SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
 
66
        SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
 
67
        copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
 
68
})
 
69
 
 
70
/*
 
71
 * Translate a "termios" structure into a "termio". Ugh.
 
72
 */
 
73
#define kernel_termios_to_user_termio(termio, termios) \
 
74
({ \
 
75
        put_user((termios)->c_iflag, &(termio)->c_iflag); \
 
76
        put_user((termios)->c_oflag, &(termio)->c_oflag); \
 
77
        put_user((termios)->c_cflag, &(termio)->c_cflag); \
 
78
        put_user((termios)->c_lflag, &(termio)->c_lflag); \
 
79
        put_user((termios)->c_line,  &(termio)->c_line); \
 
80
        copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
 
81
})
 
82
 
 
83
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
 
84
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
 
85
#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
 
86
#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
 
87
 
 
88
#endif  /* __KERNEL__ */
 
89
 
 
90
#endif  /* _PARISC_TERMIOS_H */