| #ifndef _GDTH_IOCTL_H |
| #define _GDTH_IOCTL_H |
| |
| /* gdth_ioctl.h |
| * $Id: gdth_ioctl.h,v 1.10 2001/05/22 06:28:59 achim Exp $ |
| */ |
| |
| /* IOCTLs */ |
| #define GDTIOCTL_MASK ('J'<<8) |
| #define GDTIOCTL_GENERAL (GDTIOCTL_MASK | 0) /* general IOCTL */ |
| #define GDTIOCTL_DRVERS (GDTIOCTL_MASK | 1) /* get driver version */ |
| #define GDTIOCTL_CTRTYPE (GDTIOCTL_MASK | 2) /* get controller type */ |
| #define GDTIOCTL_OSVERS (GDTIOCTL_MASK | 3) /* get OS version */ |
| #define GDTIOCTL_HDRLIST (GDTIOCTL_MASK | 4) /* get host drive list */ |
| #define GDTIOCTL_CTRCNT (GDTIOCTL_MASK | 5) /* get controller count */ |
| #define GDTIOCTL_LOCKDRV (GDTIOCTL_MASK | 6) /* lock host drive */ |
| #define GDTIOCTL_LOCKCHN (GDTIOCTL_MASK | 7) /* lock channel */ |
| #define GDTIOCTL_EVENT (GDTIOCTL_MASK | 8) /* read controller events */ |
| #define GDTIOCTL_SCSI (GDTIOCTL_MASK | 9) /* SCSI command */ |
| #define GDTIOCTL_RESET_BUS (GDTIOCTL_MASK |10) /* reset SCSI bus */ |
| #define GDTIOCTL_RESCAN (GDTIOCTL_MASK |11) /* rescan host drives */ |
| #define GDTIOCTL_RESET_DRV (GDTIOCTL_MASK |12) /* reset (remote) drv. res. */ |
| |
| #define GDTIOCTL_MAGIC 0xaffe0004 |
| #define EVENT_SIZE 294 |
| #define MAX_HDRIVES 100 |
| |
| /* IOCTL structure (write) */ |
| typedef struct { |
| ulong32 magic; /* IOCTL magic */ |
| ushort ioctl; /* IOCTL */ |
| ushort ionode; /* controller number */ |
| ushort service; /* controller service */ |
| ushort timeout; /* timeout */ |
| union { |
| struct { |
| unchar command[512]; /* controller command */ |
| unchar data[1]; /* add. data */ |
| } general; |
| struct { |
| unchar lock; /* lock/unlock */ |
| unchar drive_cnt; /* drive count */ |
| ushort drives[MAX_HDRIVES];/* drives */ |
| } lockdrv; |
| struct { |
| unchar lock; /* lock/unlock */ |
| unchar channel; /* channel */ |
| } lockchn; |
| struct { |
| int erase; /* erase event ? */ |
| int handle; |
| unchar evt[EVENT_SIZE]; /* event structure */ |
| } event; |
| struct { |
| unchar bus; /* SCSI bus */ |
| unchar target; /* target ID */ |
| unchar lun; /* LUN */ |
| unchar cmd_len; /* command length */ |
| unchar cmd[12]; /* SCSI command */ |
| } scsi; |
| struct { |
| ushort hdr_no; /* host drive number */ |
| unchar flag; /* old meth./add/remove */ |
| } rescan; |
| } iu; |
| } gdth_iowr_str; |
| |
| /* IOCTL structure (read) */ |
| typedef struct { |
| ulong32 size; /* buffer size */ |
| ulong32 status; /* IOCTL error code */ |
| union { |
| struct { |
| unchar data[1]; /* data */ |
| } general; |
| struct { |
| ushort version; /* driver version */ |
| } drvers; |
| struct { |
| unchar type; /* controller type */ |
| ushort info; /* slot etc. */ |
| ushort oem_id; /* OEM ID */ |
| ushort bios_ver; /* not used */ |
| ushort access; /* not used */ |
| ushort ext_type; /* extended type */ |
| ushort device_id; /* device ID */ |
| ushort sub_device_id; /* sub device ID */ |
| } ctrtype; |
| struct { |
| unchar version; /* OS version */ |
| unchar subversion; /* OS subversion */ |
| ushort revision; /* revision */ |
| } osvers; |
| struct { |
| ushort count; /* controller count */ |
| } ctrcnt; |
| struct { |
| int handle; |
| unchar evt[EVENT_SIZE]; /* event structure */ |
| } event; |
| struct { |
| unchar bus; /* SCSI bus, 0xff: invalid */ |
| unchar target; /* target ID */ |
| unchar lun; /* LUN */ |
| unchar cluster_type; /* cluster properties */ |
| } hdr_list[MAX_HDRIVES]; /* index is host drive number */ |
| } iu; |
| } gdth_iord_str; |
| |
| |
| #endif |
| |