📄 gdth.h
字号:
#if LINUX_VERSION_CODE >= 0x02015C struct pci_dev *pdev;#endif ushort vendor_id; /* vendor (ICP, Intel, ..) */ ushort device_id; /* device ID (0,..,9) */ ushort subdevice_id; /* sub device ID */ unchar bus; /* PCI bus */ unchar device_fn; /* PCI device/function no. */ ulong dpmem; /* DPRAM address */ ulong io; /* IO address */ ulong io_mm; /* IO address mem. mapped */ unchar irq; /* IRQ */} gdth_pci_str;/* controller information structure */typedef struct { ushort oem_id; /* OEM */ ushort type; /* controller class */ ushort raw_feat; /* feat. raw service (s/g,..) */ ulong32 stype; /* subtype (PCI: device ID) */ ushort subdevice_id; /* sub device ID (PCI) */ ushort fw_vers; /* firmware version */ ushort cache_feat; /* feat. cache serv. (s/g,..) */ ushort bmic; /* BMIC address (EISA) */ void *brd; /* DPRAM address */ ulong32 brd_phys; /* slot number/BIOS address */ gdt6c_plx_regs *plx; /* PLX regs (new PCI contr.) */ gdth_cmd_str *pccb; /* address command structure */ char *pscratch; /* scratch (DMA) buffer */ unchar scratch_busy; /* in use? */ unchar scan_mode; /* current scan mode */ unchar irq; /* IRQ */ unchar drq; /* DRQ (ISA controllers) */ ushort status; /* command status */ ushort service; /* service/firmware ver./.. */ ulong32 info; ulong32 info2; /* additional info */ Scsi_Cmnd *req_first; /* top of request queue */ struct { unchar present; /* Flag: host drive present? */ unchar is_logdrv; /* Flag: log. drive (master)? */ unchar is_arraydrv; /* Flag: array drive? */ unchar is_master; /* Flag: array drive master? */ unchar is_parity; /* Flag: parity drive? */ unchar is_hotfix; /* Flag: hotfix drive? */ unchar master_no; /* number of master drive */ unchar lock; /* drive locked? (hot plug) */ unchar heads; /* mapping */ unchar secs; ushort devtype; /* further information */ ulong32 size; /* capacity */ unchar ldr_no; /* log. drive no. */ unchar rw_attribs; /* r/w attributes */ unchar cluster_type; /* cluster properties */ unchar media_changed; /* Flag:MOUNT/UNMOUNT occured */ ulong32 start_sec; /* start sector */ } hdr[MAX_LDRIVES]; /* host drives */ struct { unchar lock; /* channel locked? (hot plug) */ unchar pdev_cnt; /* physical device count */ unchar local_no; /* local channel number */ unchar io_cnt[MAXID]; /* current IO count */ ulong32 address; /* channel address */ ulong32 id_list[MAXID]; /* IDs of the phys. devices */ } raw[MAXBUS]; /* SCSI channels */ struct { Scsi_Cmnd *cmnd; /* pending request */ ushort service; /* service */ } cmd_tab[GDTH_MAXCMDS]; /* table of pend. requests */ unchar bus_cnt; /* SCSI bus count */ unchar tid_cnt; /* Target ID count */ unchar bus_id[MAXBUS]; /* IOP IDs */ unchar virt_bus; /* number of virtual bus */ unchar more_proc; /* more /proc info supported */ ushort cmd_cnt; /* command count in DPRAM */ ushort cmd_len; /* length of actual command */ ushort cmd_offs_dpmem; /* actual offset in DPRAM */ ushort ic_all_size; /* sizeof DPRAM interf. area */ gdth_cpar_str cpar; /* controller cache par. */ gdth_bfeat_str bfeat; /* controller features */ gdth_binfo_str binfo; /* controller info */ gdth_evt_data dvr; /* event structure */#if LINUX_VERSION_CODE >= 0x02015F spinlock_t smp_lock;#endif} gdth_ha_str;/* structure for scsi_register(), SCSI bus != 0 */typedef struct { ushort hanum; ushort busnum;} gdth_num_str;/* structure for scsi_register() */typedef struct { gdth_num_str numext; /* must be the first element */ gdth_ha_str haext; gdth_cmd_str cmdext;} gdth_ext_str;/* INQUIRY data format */typedef struct { unchar type_qual; unchar modif_rmb; unchar version; unchar resp_aenc; unchar add_length; unchar reserved1; unchar reserved2; unchar misc; unchar vendor[8]; unchar product[16]; unchar revision[4];} PACKED gdth_inq_data;/* READ_CAPACITY data format */typedef struct { ulong32 last_block_no; ulong32 block_length;} PACKED gdth_rdcap_data;/* REQUEST_SENSE data format */typedef struct { unchar errorcode; unchar segno; unchar key; ulong32 info; unchar add_length; ulong32 cmd_info; unchar adsc; unchar adsq; unchar fruc; unchar key_spec[3];} PACKED gdth_sense_data;/* MODE_SENSE data format */typedef struct { struct { unchar data_length; unchar med_type; unchar dev_par; unchar bd_length; } PACKED hd; struct { unchar dens_code; unchar block_count[3]; unchar reserved; unchar block_length[3]; } PACKED bd;} PACKED gdth_modep_data;/* stack frame */typedef struct { ulong b[10]; /* 32/64 bit compiler ! */} PACKED gdth_stackframe;/* function prototyping */int gdth_detect(Scsi_Host_Template *);int gdth_release(struct Scsi_Host *);int gdth_queuecommand(Scsi_Cmnd *,void (*done)(Scsi_Cmnd *));int gdth_abort(Scsi_Cmnd *);#if LINUX_VERSION_CODE >= 0x010346int gdth_reset(Scsi_Cmnd *, unsigned int reset_flags);#elseint gdth_reset(Scsi_Cmnd *);#endifconst char *gdth_info(struct Scsi_Host *);#if LINUX_VERSION_CODE >= 0x020322int gdth_bios_param(Disk *,kdev_t,int *);int gdth_proc_info(char *,char **,off_t,int,int,int);int gdth_eh_abort(Scsi_Cmnd *scp);int gdth_eh_device_reset(Scsi_Cmnd *scp);int gdth_eh_bus_reset(Scsi_Cmnd *scp);int gdth_eh_host_reset(Scsi_Cmnd *scp);#define GDTH { proc_name: "gdth", \ proc_info: gdth_proc_info, \ name: "GDT SCSI Disk Array Controller",\ detect: gdth_detect, \ release: gdth_release, \ info: gdth_info, \ command: NULL, \ queuecommand: gdth_queuecommand, \ eh_abort_handler: gdth_eh_abort, \ eh_device_reset_handler: gdth_eh_device_reset, \ eh_bus_reset_handler: gdth_eh_bus_reset, \ eh_host_reset_handler: gdth_eh_host_reset, \ abort: gdth_abort, \ reset: gdth_reset, \ bios_param: gdth_bios_param, \ can_queue: GDTH_MAXCMDS, \ this_id: -1, \ sg_tablesize: GDTH_MAXSG, \ cmd_per_lun: GDTH_MAXC_P_L, \ present: 0, \ unchecked_isa_dma: 1, \ use_clustering: ENABLE_CLUSTERING, \ use_new_eh_code: 1 /* use new error code */ } #elif LINUX_VERSION_CODE >= 0x02015Fint gdth_bios_param(Disk *,kdev_t,int *);extern struct proc_dir_entry proc_scsi_gdth;int gdth_proc_info(char *,char **,off_t,int,int,int);int gdth_eh_abort(Scsi_Cmnd *scp);int gdth_eh_device_reset(Scsi_Cmnd *scp);int gdth_eh_bus_reset(Scsi_Cmnd *scp);int gdth_eh_host_reset(Scsi_Cmnd *scp);#define GDTH { proc_dir: &proc_scsi_gdth, \ proc_info: gdth_proc_info, \ name: "GDT SCSI Disk Array Controller",\ detect: gdth_detect, \ release: gdth_release, \ info: gdth_info, \ command: NULL, \ queuecommand: gdth_queuecommand, \ eh_abort_handler: gdth_eh_abort, \ eh_device_reset_handler: gdth_eh_device_reset, \ eh_bus_reset_handler: gdth_eh_bus_reset, \ eh_host_reset_handler: gdth_eh_host_reset, \ abort: gdth_abort, \ reset: gdth_reset, \ bios_param: gdth_bios_param, \ can_queue: GDTH_MAXCMDS, \ this_id: -1, \ sg_tablesize: GDTH_MAXSG, \ cmd_per_lun: GDTH_MAXC_P_L, \ present: 0, \ unchecked_isa_dma: 1, \ use_clustering: ENABLE_CLUSTERING, \ use_new_eh_code: 1 /* use new error code */ } #elif LINUX_VERSION_CODE >= 0x010300int gdth_bios_param(Disk *,kdev_t,int *);extern struct proc_dir_entry proc_scsi_gdth;int gdth_proc_info(char *,char **,off_t,int,int,int);#define GDTH { NULL, NULL, \ &proc_scsi_gdth, \ gdth_proc_info, \ "GDT SCSI Disk Array Controller", \ gdth_detect, \ gdth_release, \ gdth_info, \ NULL, \ gdth_queuecommand, \ gdth_abort, \ gdth_reset, \ NULL, \ gdth_bios_param, \ GDTH_MAXCMDS, \ -1, \ GDTH_MAXSG, \ GDTH_MAXC_P_L, \ 0, \ 1, \ ENABLE_CLUSTERING}#elseint gdth_bios_param(Disk *,int,int *);#define GDTH { NULL, NULL, \ "GDT SCSI Disk Array Controller", \ gdth_detect, \ gdth_release, \ gdth_info, \ NULL, \ gdth_queuecommand, \ gdth_abort, \ gdth_reset, \ NULL, \ gdth_bios_param, \ GDTH_MAXCMDS, \ -1, \ GDTH_MAXSG, \ GDTH_MAXC_P_L, \ 0, \ 1, \ ENABLE_CLUSTERING}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -