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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef IEEE1394_RAW1394_H
  2. #define IEEE1394_RAW1394_H
  3. #define RAW1394_DEVICE_MAJOR      171
  4. #define RAW1394_DEVICE_NAME       "raw1394"
  5. #define RAW1394_KERNELAPI_VERSION 4
  6. /* state: opened */
  7. #define RAW1394_REQ_INITIALIZE    1
  8. /* state: initialized */
  9. #define RAW1394_REQ_LIST_CARDS    2
  10. #define RAW1394_REQ_SET_CARD      3
  11. /* state: connected */
  12. #define RAW1394_REQ_ASYNC_READ    100
  13. #define RAW1394_REQ_ASYNC_WRITE   101
  14. #define RAW1394_REQ_LOCK          102
  15. #define RAW1394_REQ_LOCK64        103
  16. #define RAW1394_REQ_ISO_SEND      104
  17. #define RAW1394_REQ_ISO_LISTEN    200
  18. #define RAW1394_REQ_FCP_LISTEN    201
  19. #define RAW1394_REQ_RESET_BUS     202
  20. /* kernel to user */
  21. #define RAW1394_REQ_BUS_RESET     10000
  22. #define RAW1394_REQ_ISO_RECEIVE   10001
  23. #define RAW1394_REQ_FCP_REQUEST   10002
  24. /* error codes */
  25. #define RAW1394_ERROR_NONE        0
  26. #define RAW1394_ERROR_COMPAT      (-1001)
  27. #define RAW1394_ERROR_STATE_ORDER (-1002)
  28. #define RAW1394_ERROR_GENERATION  (-1003)
  29. #define RAW1394_ERROR_INVALID_ARG (-1004)
  30. #define RAW1394_ERROR_MEMFAULT    (-1005)
  31. #define RAW1394_ERROR_ALREADY     (-1006)
  32. #define RAW1394_ERROR_EXCESSIVE   (-1020)
  33. #define RAW1394_ERROR_UNTIDY_LEN  (-1021)
  34. #define RAW1394_ERROR_SEND_ERROR  (-1100)
  35. #define RAW1394_ERROR_ABORTED     (-1101)
  36. #define RAW1394_ERROR_TIMEOUT     (-1102)
  37. #include <asm/types.h>
  38. struct raw1394_request {
  39.         __u32 type;
  40.         __s32 error;
  41.         __u32 misc;
  42.         __u32 generation;
  43.         __u32 length;
  44.         __u64 address;
  45.         __u64 tag;
  46.         __u64 sendb;
  47.         __u64 recvb;
  48. };
  49. struct raw1394_khost_list {
  50.         __u32 nodes;
  51.         __u8 name[32];
  52. };
  53. #ifdef __KERNEL__
  54. struct iso_block_store {
  55.         atomic_t refcount;
  56.         size_t data_size;
  57.         quadlet_t data[0];
  58. };
  59. struct file_info {
  60.         struct list_head list;
  61.         enum { opened, initialized, connected } state;
  62.         unsigned int protocol_version;
  63.         struct hpsb_host *host;
  64.         struct list_head req_pending;
  65.         struct list_head req_complete;
  66.         struct semaphore complete_sem;
  67.         spinlock_t reqlists_lock;
  68.         wait_queue_head_t poll_wait_complete;
  69.         u8 *fcp_buffer;
  70.         u64 listen_channels;
  71.         quadlet_t *iso_buffer;
  72.         size_t iso_buffer_length;
  73. };
  74. struct pending_request {
  75.         struct list_head list;
  76.         struct file_info *file_info;
  77.         struct hpsb_packet *packet;
  78.         struct tq_struct tq;
  79.         struct iso_block_store *ibs;
  80.         quadlet_t *data;
  81.         int free_data;
  82.         struct raw1394_request req;
  83. };
  84. struct host_info {
  85.         struct list_head list;
  86.         struct hpsb_host *host;
  87.         struct list_head file_info_list;
  88. };
  89. #endif /* __KERNEL__ */
  90. #endif /* IEEE1394_RAW1394_H */