home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / termios.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.0 KB  |  114 lines

  1. #ifndef _ASM_X86_TERMIOS_H
  2. #define _ASM_X86_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. #include <asm/uaccess.h>
  45.  
  46. /*    intr=^C        quit=^\        erase=del    kill=^U
  47.     eof=^D        vtime=\0    vmin=\1        sxtc=\0
  48.     start=^Q    stop=^S        susp=^Z        eol=\0
  49.     reprint=^R    discard=^U    werase=^W    lnext=^V
  50.     eol2=\0
  51. */
  52. #define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
  53.  
  54. /*
  55.  * Translate a "termio" structure into a "termios". Ugh.
  56.  */
  57. #define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
  58.     unsigned short __tmp; \
  59.     get_user(__tmp,&(termio)->x); \
  60.     *(unsigned short *) &(termios)->x = __tmp; \
  61. }
  62.  
  63. static inline int user_termio_to_kernel_termios(struct ktermios *termios,
  64.                         struct termio __user *termio)
  65. {
  66.     SET_LOW_TERMIOS_BITS(termios, termio, c_iflag);
  67.     SET_LOW_TERMIOS_BITS(termios, termio, c_oflag);
  68.     SET_LOW_TERMIOS_BITS(termios, termio, c_cflag);
  69.     SET_LOW_TERMIOS_BITS(termios, termio, c_lflag);
  70.     return copy_from_user(termios->c_cc, termio->c_cc, NCC);
  71. }
  72.  
  73. /*
  74.  * Translate a "termios" structure into a "termio". Ugh.
  75.  */
  76. static inline int kernel_termios_to_user_termio(struct termio __user *termio,
  77.                         struct ktermios *termios)
  78. {
  79.     put_user((termios)->c_iflag, &(termio)->c_iflag);
  80.     put_user((termios)->c_oflag, &(termio)->c_oflag);
  81.     put_user((termios)->c_cflag, &(termio)->c_cflag);
  82.     put_user((termios)->c_lflag, &(termio)->c_lflag);
  83.     put_user((termios)->c_line,  &(termio)->c_line);
  84.     return copy_to_user((termio)->c_cc, (termios)->c_cc, NCC);
  85. }
  86.  
  87. static inline int user_termios_to_kernel_termios(struct ktermios *k,
  88.                          struct termios2 __user *u)
  89. {
  90.     return copy_from_user(k, u, sizeof(struct termios2));
  91. }
  92.  
  93. static inline int kernel_termios_to_user_termios(struct termios2 __user *u,
  94.                          struct ktermios *k)
  95. {
  96.     return copy_to_user(u, k, sizeof(struct termios2));
  97. }
  98.  
  99. static inline int user_termios_to_kernel_termios_1(struct ktermios *k,
  100.                            struct termios __user *u)
  101. {
  102.     return copy_from_user(k, u, sizeof(struct termios));
  103. }
  104.  
  105. static inline int kernel_termios_to_user_termios_1(struct termios __user *u,
  106.                            struct ktermios *k)
  107. {
  108.     return copy_to_user(u, k, sizeof(struct termios));
  109. }
  110.  
  111. #endif    /* __KERNEL__ */
  112.  
  113. #endif /* _ASM_X86_TERMIOS_H */
  114.