tty: i386/x86_64 arbitary speed support
Adds the needed TCGETS2/TCSETS2 ioctl calls, structures, defines and the like. Tested against the test suite and passes. Other platforms should need roughly the same change. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
c23fbb6bcb
Коммит
6de02123bf
|
@ -47,6 +47,10 @@
|
||||||
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
||||||
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
||||||
#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
||||||
|
#define TCGETS2 _IOR('T',0x2A, struct termios2)
|
||||||
|
#define TCSETS2 _IOW('T',0x2B, struct termios2)
|
||||||
|
#define TCSETSW2 _IOW('T',0x2C, struct termios2)
|
||||||
|
#define TCSETSF2 _IOW('T',0x2D, struct termios2)
|
||||||
#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,17 @@ struct termios {
|
||||||
cc_t c_cc[NCCS]; /* control characters */
|
cc_t c_cc[NCCS]; /* control characters */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct termios2 {
|
||||||
|
tcflag_t c_iflag; /* input mode flags */
|
||||||
|
tcflag_t c_oflag; /* output mode flags */
|
||||||
|
tcflag_t c_cflag; /* control mode flags */
|
||||||
|
tcflag_t c_lflag; /* local mode flags */
|
||||||
|
cc_t c_line; /* line discipline */
|
||||||
|
cc_t c_cc[NCCS]; /* control characters */
|
||||||
|
speed_t c_ispeed; /* input speed */
|
||||||
|
speed_t c_ospeed; /* output speed */
|
||||||
|
};
|
||||||
|
|
||||||
struct ktermios {
|
struct ktermios {
|
||||||
tcflag_t c_iflag; /* input mode flags */
|
tcflag_t c_iflag; /* input mode flags */
|
||||||
tcflag_t c_oflag; /* output mode flags */
|
tcflag_t c_oflag; /* output mode flags */
|
||||||
|
@ -129,6 +140,7 @@ struct ktermios {
|
||||||
#define HUPCL 0002000
|
#define HUPCL 0002000
|
||||||
#define CLOCAL 0004000
|
#define CLOCAL 0004000
|
||||||
#define CBAUDEX 0010000
|
#define CBAUDEX 0010000
|
||||||
|
#define BOTHER 0010000
|
||||||
#define B57600 0010001
|
#define B57600 0010001
|
||||||
#define B115200 0010002
|
#define B115200 0010002
|
||||||
#define B230400 0010003
|
#define B230400 0010003
|
||||||
|
@ -148,6 +160,8 @@ struct ktermios {
|
||||||
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||||
#define CRTSCTS 020000000000 /* flow control */
|
#define CRTSCTS 020000000000 /* flow control */
|
||||||
|
|
||||||
|
#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
|
||||||
|
|
||||||
/* c_lflag bits */
|
/* c_lflag bits */
|
||||||
#define ISIG 0000001
|
#define ISIG 0000001
|
||||||
#define ICANON 0000002
|
#define ICANON 0000002
|
||||||
|
|
|
@ -81,8 +81,10 @@ struct termio {
|
||||||
copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
|
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 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 termios))
|
#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))
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ struct ktermios {
|
||||||
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||||
#define CRTSCTS 020000000000 /* flow control */
|
#define CRTSCTS 020000000000 /* flow control */
|
||||||
|
|
||||||
#define IBSHIFT 8 /* Shift from CBAUD to CIBAUD */
|
#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
|
||||||
|
|
||||||
/* c_lflag bits */
|
/* c_lflag bits */
|
||||||
#define ISIG 0000001
|
#define ISIG 0000001
|
||||||
|
|
Загрузка…
Ссылка в новой задаче