]> err.no Git - linux-2.6/blobdiff - include/asm-sparc64/termios.h
rt2x00: Fix lock dependency errror
[linux-2.6] / include / asm-sparc64 / termios.h
index f05d390993d5d4c953727a240577e28e6649efa2..1f5dab25dda5ccbca284f309585ac013e014206f 100644 (file)
@@ -1,4 +1,3 @@
-/* $Id: termios.h,v 1.11 2001/06/01 08:12:11 davem Exp $ */
 #ifndef _SPARC64_TERMIOS_H
 #define _SPARC64_TERMIOS_H
 
@@ -33,11 +32,6 @@ struct ltchars {
 };
 #endif /* __KERNEL__ */
 
-struct sunos_ttysize {
-       int st_lines;   /* Lines on the terminal */
-       int st_columns; /* Columns on the terminal */
-};
-
 struct winsize {
        unsigned short ws_row;
        unsigned short ws_col;
@@ -123,10 +117,52 @@ struct winsize {
                err |= get_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
                err |= get_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
        } \
+       err |= get_user((k)->c_ispeed,  &(u)->c_ispeed); \
+       err |= get_user((k)->c_ospeed,  &(u)->c_ospeed); \
        err; \
 })
 
 #define kernel_termios_to_user_termios(u, k) \
+({ \
+       int err; \
+       err  = put_user((k)->c_iflag, &(u)->c_iflag); \
+       err |= put_user((k)->c_oflag, &(u)->c_oflag); \
+       err |= put_user((k)->c_cflag, &(u)->c_cflag); \
+       err |= put_user((k)->c_lflag, &(u)->c_lflag); \
+       err |= put_user((k)->c_line, &(u)->c_line); \
+       err |= copy_to_user((u)->c_cc, (k)->c_cc, NCCS); \
+       if(!((k)->c_lflag & ICANON)) { \
+               err |= put_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
+               err |= put_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
+       } else { \
+               err |= put_user((k)->c_cc[VEOF], &(u)->c_cc[VEOF]); \
+               err |= put_user((k)->c_cc[VEOL], &(u)->c_cc[VEOL]); \
+       } \
+       err |= put_user((k)->c_ispeed, &(u)->c_ispeed); \
+       err |= put_user((k)->c_ospeed, &(u)->c_ospeed); \
+       err; \
+})
+
+#define user_termios_to_kernel_termios_1(k, u) \
+({ \
+       int err; \
+       err  = get_user((k)->c_iflag, &(u)->c_iflag); \
+       err |= get_user((k)->c_oflag, &(u)->c_oflag); \
+       err |= get_user((k)->c_cflag, &(u)->c_cflag); \
+       err |= get_user((k)->c_lflag, &(u)->c_lflag); \
+       err |= get_user((k)->c_line,  &(u)->c_line); \
+       err |= copy_from_user((k)->c_cc, (u)->c_cc, NCCS); \
+       if((k)->c_lflag & ICANON) { \
+               err |= get_user((k)->c_cc[VEOF], &(u)->c_cc[VEOF]); \
+               err |= get_user((k)->c_cc[VEOL], &(u)->c_cc[VEOL]); \
+       } else { \
+               err |= get_user((k)->c_cc[VMIN],  &(u)->c_cc[_VMIN]); \
+               err |= get_user((k)->c_cc[VTIME], &(u)->c_cc[_VTIME]); \
+       } \
+       err; \
+})
+
+#define kernel_termios_to_user_termios_1(u, k) \
 ({ \
        int err; \
        err  = put_user((k)->c_iflag, &(u)->c_iflag); \