hwc_rw.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  drivers/s390/char/hwc_rw.h
  3.  *    interface to the HWC-read/write driver 
  4.  *
  5.  *  S390 version
  6.  *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  7.  *    Author(s): Martin Peschke <mpeschke@de.ibm.com>
  8.  */
  9. #ifndef __HWC_RW_H__
  10. #define __HWC_RW_H__
  11. #include <linux/ioctl.h>
  12. typedef struct {
  13. void (*move_input) (unsigned char *, unsigned int);
  14. void (*wake_up) (void);
  15. } hwc_high_level_calls_t;
  16. struct _hwc_request;
  17. typedef void hwc_callback_t (struct _hwc_request *);
  18. typedef struct _hwc_request {
  19. void *block;
  20. u32 word;
  21. hwc_callback_t *callback;
  22. void *data;
  23. } __attribute__ ((packed)) 
  24. hwc_request_t;
  25. #define HWC_ASCEBC(x) ((MACHINE_IS_VM ? _ascebc[x] : _ascebc_500[x]))
  26. #define HWC_EBCASC_STR(s,c) ((MACHINE_IS_VM ? EBCASC(s,c) : EBCASC_500(s,c)))
  27. #define HWC_ASCEBC_STR(s,c) ((MACHINE_IS_VM ? ASCEBC(s,c) : ASCEBC_500(s,c)))
  28. #define IN_HWCB      1
  29. #define IN_WRITE_BUF 2
  30. #define IN_BUFS_TOTAL        (IN_HWCB | IN_WRITE_BUF)
  31. typedef unsigned short int ioctl_htab_t;
  32. typedef unsigned char ioctl_echo_t;
  33. typedef unsigned short int ioctl_cols_t;
  34. typedef signed char ioctl_nl_t;
  35. typedef unsigned short int ioctl_obuf_t;
  36. typedef unsigned char ioctl_case_t;
  37. typedef unsigned char ioctl_delim_t;
  38. typedef struct {
  39. ioctl_htab_t width_htab;
  40. ioctl_echo_t echo;
  41. ioctl_cols_t columns;
  42. ioctl_nl_t final_nl;
  43. ioctl_obuf_t max_hwcb;
  44. ioctl_obuf_t kmem_hwcb;
  45. ioctl_case_t tolower;
  46. ioctl_delim_t delim;
  47. } hwc_ioctls_t;
  48. static hwc_ioctls_t _hwc_ioctls;
  49. #define HWC_IOCTL_LETTER 'B'
  50. #define TIOCHWCSHTAB _IOW(HWC_IOCTL_LETTER, 0, _hwc_ioctls.width_htab)
  51. #define TIOCHWCSECHO _IOW(HWC_IOCTL_LETTER, 1, _hwc_ioctls.echo)
  52. #define TIOCHWCSCOLS _IOW(HWC_IOCTL_LETTER, 2, _hwc_ioctls.columns)
  53. #define TIOCHWCSNL _IOW(HWC_IOCTL_LETTER, 4, _hwc_ioctls.final_nl)
  54. #define TIOCHWCSOBUF _IOW(HWC_IOCTL_LETTER, 5, _hwc_ioctls.max_hwcb)
  55. #define TIOCHWCSINIT _IO(HWC_IOCTL_LETTER, 6)
  56. #define TIOCHWCSCASE _IOW(HWC_IOCTL_LETTER, 7, _hwc_ioctls.tolower)
  57. #define TIOCHWCSDELIM _IOW(HWC_IOCTL_LETTER, 9, _hwc_ioctls.delim)
  58. #define TIOCHWCGHTAB _IOR(HWC_IOCTL_LETTER, 10, _hwc_ioctls.width_htab)
  59. #define TIOCHWCGECHO _IOR(HWC_IOCTL_LETTER, 11, _hwc_ioctls.echo)
  60. #define TIOCHWCGCOLS _IOR(HWC_IOCTL_LETTER, 12, _hwc_ioctls.columns)
  61. #define TIOCHWCGNL _IOR(HWC_IOCTL_LETTER, 14, _hwc_ioctls.final_nl)
  62. #define TIOCHWCGOBUF _IOR(HWC_IOCTL_LETTER, 15, _hwc_ioctls.max_hwcb)
  63. #define TIOCHWCGINIT _IOR(HWC_IOCTL_LETTER, 16, _hwc_ioctls)
  64. #define TIOCHWCGCASE _IOR(HWC_IOCTL_LETTER, 17, _hwc_ioctls.tolower)
  65. #define TIOCHWCGDELIM _IOR(HWC_IOCTL_LETTER, 19, _hwc_ioctls.delim)
  66. #define TIOCHWCGKBUF _IOR(HWC_IOCTL_LETTER, 20, _hwc_ioctls.max_hwcb)
  67. #define TIOCHWCGCURR _IOR(HWC_IOCTL_LETTER, 21, _hwc_ioctls)
  68. #ifndef __HWC_RW_C__
  69. extern int hwc_init (void);
  70. extern int hwc_write (int from_user, const unsigned char *, unsigned int);
  71. extern unsigned int hwc_chars_in_buffer (unsigned char);
  72. extern unsigned int hwc_write_room (unsigned char);
  73. extern void hwc_flush_buffer (unsigned char);
  74. extern void hwc_unblank (void);
  75. extern signed int hwc_ioctl (unsigned int, unsigned long);
  76. extern void do_hwc_interrupt (void);
  77. extern int hwc_printk (const char *,...);
  78. extern signed int hwc_register_calls (hwc_high_level_calls_t *);
  79. extern signed int hwc_unregister_calls (hwc_high_level_calls_t *);
  80. extern int hwc_send (hwc_request_t *);
  81. #endif
  82. #endif