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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _GDTH_IOCTL_H
  2. #define _GDTH_IOCTL_H
  3. /* gdth_ioctl.h
  4.  * $Id: gdth_ioctl.h,v 1.10 2001/05/22 06:28:59 achim Exp $
  5.  */
  6. /* IOCTLs */
  7. #define GDTIOCTL_MASK       ('J'<<8)
  8. #define GDTIOCTL_GENERAL    (GDTIOCTL_MASK | 0) /* general IOCTL */
  9. #define GDTIOCTL_DRVERS     (GDTIOCTL_MASK | 1) /* get driver version */
  10. #define GDTIOCTL_CTRTYPE    (GDTIOCTL_MASK | 2) /* get controller type */
  11. #define GDTIOCTL_OSVERS     (GDTIOCTL_MASK | 3) /* get OS version */
  12. #define GDTIOCTL_HDRLIST    (GDTIOCTL_MASK | 4) /* get host drive list */
  13. #define GDTIOCTL_CTRCNT     (GDTIOCTL_MASK | 5) /* get controller count */
  14. #define GDTIOCTL_LOCKDRV    (GDTIOCTL_MASK | 6) /* lock host drive */
  15. #define GDTIOCTL_LOCKCHN    (GDTIOCTL_MASK | 7) /* lock channel */
  16. #define GDTIOCTL_EVENT      (GDTIOCTL_MASK | 8) /* read controller events */
  17. #define GDTIOCTL_SCSI       (GDTIOCTL_MASK | 9) /* SCSI command */
  18. #define GDTIOCTL_RESET_BUS  (GDTIOCTL_MASK |10) /* reset SCSI bus */
  19. #define GDTIOCTL_RESCAN     (GDTIOCTL_MASK |11) /* rescan host drives */
  20. #define GDTIOCTL_RESET_DRV  (GDTIOCTL_MASK |12) /* reset (remote) drv. res. */
  21. #define GDTIOCTL_MAGIC      0xaffe0004
  22. #define EVENT_SIZE          294 
  23. #define MAX_HDRIVES         100                     
  24. /* IOCTL structure (write) */
  25. typedef struct {
  26.     ulong32                 magic;              /* IOCTL magic */
  27.     ushort                  ioctl;              /* IOCTL */
  28.     ushort                  ionode;             /* controller number */
  29.     ushort                  service;            /* controller service */
  30.     ushort                  timeout;            /* timeout */
  31.     union {
  32.         struct {
  33.             unchar          command[512];       /* controller command */
  34.             unchar          data[1];            /* add. data */
  35.         } general;
  36.         struct {
  37.             unchar          lock;               /* lock/unlock */
  38.             unchar          drive_cnt;          /* drive count */
  39.             ushort          drives[MAX_HDRIVES];/* drives */
  40.         } lockdrv;
  41.         struct {
  42.             unchar          lock;               /* lock/unlock */
  43.             unchar          channel;            /* channel */
  44.         } lockchn;
  45.         struct {
  46.             int             erase;              /* erase event ? */
  47.             int             handle;
  48.             unchar          evt[EVENT_SIZE];    /* event structure */
  49.         } event;
  50.         struct {
  51.             unchar          bus;                /* SCSI bus */
  52.             unchar          target;             /* target ID */
  53.             unchar          lun;                /* LUN */
  54.             unchar          cmd_len;            /* command length */
  55.             unchar          cmd[12];            /* SCSI command */
  56.         } scsi;
  57.         struct {
  58.             ushort          hdr_no;             /* host drive number */
  59.             unchar          flag;               /* old meth./add/remove */
  60.         } rescan;
  61.     } iu;
  62. } gdth_iowr_str;
  63. /* IOCTL structure (read) */
  64. typedef struct {
  65.     ulong32                 size;               /* buffer size */
  66.     ulong32                 status;             /* IOCTL error code */
  67.     union {
  68.         struct {
  69.             unchar          data[1];            /* data */
  70.         } general;
  71.         struct {
  72.             ushort          version;            /* driver version */
  73.         } drvers;
  74.         struct {
  75.             unchar          type;               /* controller type */
  76.             ushort          info;               /* slot etc. */
  77.             ushort          oem_id;             /* OEM ID */
  78.             ushort          bios_ver;           /* not used */
  79.             ushort          access;             /* not used */
  80.             ushort          ext_type;           /* extended type */
  81.             ushort          device_id;          /* device ID */
  82.             ushort          sub_device_id;      /* sub device ID */
  83.         } ctrtype;
  84.         struct {
  85.             unchar          version;            /* OS version */
  86.             unchar          subversion;         /* OS subversion */
  87.             ushort          revision;           /* revision */
  88.         } osvers;
  89.         struct {
  90.             ushort          count;              /* controller count */
  91.         } ctrcnt;
  92.         struct {
  93.             int             handle;
  94.             unchar          evt[EVENT_SIZE];    /* event structure */
  95.         } event;
  96.         struct {
  97.             unchar          bus;                /* SCSI bus, 0xff: invalid */
  98.             unchar          target;             /* target ID */
  99.             unchar          lun;                /* LUN */
  100.             unchar          cluster_type;       /* cluster properties */
  101.         } hdr_list[MAX_HDRIVES];                /* index is host drive number */
  102.     } iu;
  103. } gdth_iord_str;
  104. #endif