ioctl.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/parisc/hpux/ioctl.c
  3.  *
  4.  * implements some necessary HPUX ioctls.
  5.  */
  6. /*
  7.  * Supported ioctls:
  8.  *   TCGETA
  9.  *   TCSETA
  10.  *   TCSETAW
  11.  *   TCSETAF
  12.  *   TCSBRK
  13.  *   TCXONC
  14.  *   TCFLSH
  15.  *   TIOCGWINSZ
  16.  *   TIOCSWINSZ
  17.  *   TIOCGPGRP
  18.  *   TIOCSPGRP
  19.  */
  20. #include <linux/smp_lock.h>
  21. #include <asm/errno.h>
  22. #include <asm/ioctl.h>
  23. #include <asm/termios.h>
  24. #include <asm/uaccess.h>
  25. int sys_ioctl(unsigned int, unsigned int, unsigned long);
  26.  
  27. static int hpux_ioctl_t(int fd, unsigned long cmd, unsigned long arg)
  28. {
  29. int result = -EOPNOTSUPP;
  30. int nr = _IOC_NR(cmd);
  31. switch (nr) {
  32. case 106:
  33. result = sys_ioctl(fd, TIOCSWINSZ, arg);
  34. break;
  35. case 107:
  36. result = sys_ioctl(fd, TIOCGWINSZ, arg);
  37. break;
  38. }
  39. return result;
  40. }
  41. int hpux_ioctl(int fd, unsigned long cmd, unsigned long arg)
  42. {
  43. int result = -EOPNOTSUPP;
  44. int type = _IOC_TYPE(cmd);
  45. switch (type) {
  46. case 'T':
  47. /* Our structures are now compatible with HPUX's */
  48. result = sys_ioctl(fd, cmd, arg);
  49. break;
  50. case 't':
  51. result = hpux_ioctl_t(fd, cmd, arg);
  52. break;
  53. default:
  54. /* If my mother ever sees this, I hope she disowns me.
  55.  * Take this out after NYLWE. */
  56. result = sys_ioctl(fd, cmd, arg);
  57. }
  58. return result;
  59. }