Blame view
include/asm-generic/termios-base.h
2.07 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 |
/* termios.h: generic termios/termio user copying/translation */ |
63b852a6b asm-generic: rena... |
3 4 |
#ifndef _ASM_GENERIC_TERMIOS_BASE_H #define _ASM_GENERIC_TERMIOS_BASE_H |
1da177e4c Linux-2.6.12-rc2 |
5 6 7 8 9 10 11 12 |
#include <asm/uaccess.h> #ifndef __ARCH_TERMIO_GETPUT /* * Translate a "termio" structure into a "termios". Ugh. */ |
606d099cd [PATCH] tty: swit... |
13 |
static inline int user_termio_to_kernel_termios(struct ktermios *termios, |
1da177e4c Linux-2.6.12-rc2 |
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 |
struct termio __user *termio) { unsigned short tmp; if (get_user(tmp, &termio->c_iflag) < 0) goto fault; termios->c_iflag = (0xffff0000 & termios->c_iflag) | tmp; if (get_user(tmp, &termio->c_oflag) < 0) goto fault; termios->c_oflag = (0xffff0000 & termios->c_oflag) | tmp; if (get_user(tmp, &termio->c_cflag) < 0) goto fault; termios->c_cflag = (0xffff0000 & termios->c_cflag) | tmp; if (get_user(tmp, &termio->c_lflag) < 0) goto fault; termios->c_lflag = (0xffff0000 & termios->c_lflag) | tmp; if (get_user(termios->c_line, &termio->c_line) < 0) goto fault; if (copy_from_user(termios->c_cc, termio->c_cc, NCC) != 0) goto fault; return 0; fault: return -EFAULT; } /* * Translate a "termios" structure into a "termio". Ugh. */ static inline int kernel_termios_to_user_termio(struct termio __user *termio, |
606d099cd [PATCH] tty: swit... |
50 |
struct ktermios *termios) |
1da177e4c Linux-2.6.12-rc2 |
51 52 53 54 55 56 57 58 59 60 61 |
{ if (put_user(termios->c_iflag, &termio->c_iflag) < 0 || put_user(termios->c_oflag, &termio->c_oflag) < 0 || put_user(termios->c_cflag, &termio->c_cflag) < 0 || put_user(termios->c_lflag, &termio->c_lflag) < 0 || put_user(termios->c_line, &termio->c_line) < 0 || copy_to_user(termio->c_cc, termios->c_cc, NCC) != 0) return -EFAULT; return 0; } |
aa7738a5f tty: let architec... |
62 |
#ifndef user_termios_to_kernel_termios |
1da177e4c Linux-2.6.12-rc2 |
63 |
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) |
aa7738a5f tty: let architec... |
64 65 66 |
#endif #ifndef kernel_termios_to_user_termios |
1da177e4c Linux-2.6.12-rc2 |
67 |
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) |
aa7738a5f tty: let architec... |
68 |
#endif |
b0052fcae Define termios_1 ... |
69 70 |
#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)) |
1da177e4c Linux-2.6.12-rc2 |
71 72 |
#endif /* __ARCH_TERMIO_GETPUT */ |
63b852a6b asm-generic: rena... |
73 |
#endif /* _ASM_GENERIC_TERMIOS_BASE_H */ |