Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenscsiport_int.h
Go to the documentation of this file.
00001 /* 00002 * SCSI_PORT_TIMER_STATES 00003 * 00004 * DESCRIPTION 00005 * An enumeration containing the states in the timer DFA 00006 */ 00007 00008 #define VERSION "0.0.3" 00009 00010 #ifndef PAGE_ROUND_UP 00011 #define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) ) 00012 #endif 00013 #ifndef ROUND_UP 00014 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) 00015 #endif 00016 00017 #define TAG_SCSIPORT 'ISCS' 00018 00019 /* Defines how many logical unit arrays will be in a device extension */ 00020 #define LUS_NUMBER 8 00021 00022 #define MAX_SG_LIST 17 00023 00024 /* Flags */ 00025 #define SCSI_PORT_DEVICE_BUSY 0x0001 00026 #define SCSI_PORT_LU_ACTIVE 0x0002 00027 #define SCSI_PORT_NOTIFICATION_NEEDED 0x0004 00028 #define SCSI_PORT_NEXT_REQUEST_READY 0x0008 00029 #define SCSI_PORT_FLUSH_ADAPTERS 0x0010 00030 #define SCSI_PORT_MAP_TRANSFER 0x0020 00031 #define SCSI_PORT_RESET 0x0080 00032 #define SCSI_PORT_RESET_REQUEST 0x0100 00033 #define SCSI_PORT_RESET_REPORTED 0x0200 00034 #define SCSI_PORT_REQUEST_PENDING 0x0800 00035 #define SCSI_PORT_DISCONNECT_ALLOWED 0x1000 00036 #define SCSI_PORT_DISABLE_INT_REQUESET 0x2000 00037 #define SCSI_PORT_DISABLE_INTERRUPTS 0x4000 00038 #define SCSI_PORT_ENABLE_INT_REQUEST 0x8000 00039 #define SCSI_PORT_TIMER_NEEDED 0x10000 00040 00041 /* LUN Extension flags*/ 00042 #define LUNEX_FROZEN_QUEUE 0x0001 00043 #define LUNEX_NEED_REQUEST_SENSE 0x0004 00044 #define LUNEX_BUSY 0x0008 00045 #define LUNEX_FULL_QUEUE 0x0010 00046 #define LUNEX_REQUEST_PENDING 0x0020 00047 #define SCSI_PORT_SCAN_IN_PROGRESS 0x8000 00048 00049 00050 typedef enum _SCSI_PORT_TIMER_STATES 00051 { 00052 IDETimerIdle, 00053 IDETimerCmdWait, 00054 IDETimerResetWaitForBusyNegate, 00055 IDETimerResetWaitForDrdyAssert 00056 } SCSI_PORT_TIMER_STATES; 00057 00058 typedef struct _CONFIGURATION_INFO 00059 { 00060 /* Identify info */ 00061 ULONG AdapterNumber; 00062 ULONG LastAdapterNumber; 00063 ULONG BusNumber; 00064 00065 /* Registry related */ 00066 HANDLE BusKey; 00067 HANDLE ServiceKey; 00068 HANDLE DeviceKey; 00069 00070 /* Features */ 00071 BOOLEAN DisableTaggedQueueing; 00072 BOOLEAN DisableMultipleLun; 00073 00074 /* Parameters */ 00075 PVOID Parameter; 00076 PACCESS_RANGE AccessRanges; 00077 } CONFIGURATION_INFO, *PCONFIGURATION_INFO; 00078 00079 typedef struct _SCSI_PORT_DEVICE_BASE 00080 { 00081 LIST_ENTRY List; 00082 00083 PVOID MappedAddress; 00084 ULONG NumberOfBytes; 00085 SCSI_PHYSICAL_ADDRESS IoAddress; 00086 ULONG SystemIoBusNumber; 00087 } SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE; 00088 00089 typedef struct _SCSI_SG_ADDRESS 00090 { 00091 PHYSICAL_ADDRESS PhysicalAddress; 00092 ULONG Length; 00093 } SCSI_SG_ADDRESS, *PSCSI_SG_ADDRESS; 00094 00095 typedef struct _SCSI_REQUEST_BLOCK_INFO 00096 { 00097 LIST_ENTRY Requests; 00098 PSCSI_REQUEST_BLOCK Srb; 00099 PCHAR DataOffset; 00100 PVOID SaveSenseRequest; 00101 00102 ULONG SequenceNumber; 00103 00104 /* DMA stuff */ 00105 PVOID BaseOfMapRegister; 00106 ULONG NumberOfMapRegisters; 00107 00108 struct _SCSI_REQUEST_BLOCK_INFO *CompletedRequests; 00109 00110 /* Scatter-gather list */ 00111 PSCSI_SG_ADDRESS ScatterGather; 00112 SCSI_SG_ADDRESS ScatterGatherList[MAX_SG_LIST]; 00113 } SCSI_REQUEST_BLOCK_INFO, *PSCSI_REQUEST_BLOCK_INFO; 00114 00115 typedef struct _SCSI_PORT_LUN_EXTENSION 00116 { 00117 UCHAR PathId; 00118 UCHAR TargetId; 00119 UCHAR Lun; 00120 00121 ULONG Flags; 00122 00123 struct _SCSI_PORT_LUN_EXTENSION *Next; 00124 00125 BOOLEAN DeviceClaimed; 00126 PDEVICE_OBJECT DeviceObject; 00127 00128 INQUIRYDATA InquiryData; 00129 00130 KDEVICE_QUEUE DeviceQueue; 00131 ULONG SortKey; 00132 ULONG QueueCount; 00133 ULONG MaxQueueCount; 00134 00135 ULONG AttemptCount; 00136 LONG RequestTimeout; 00137 00138 PIRP BusyRequest; 00139 PIRP PendingRequest; 00140 00141 struct _SCSI_PORT_LUN_EXTENSION *ReadyLun; 00142 struct _SCSI_PORT_LUN_EXTENSION *CompletedAbortRequests; 00143 00144 SCSI_REQUEST_BLOCK_INFO SrbInfo; 00145 00146 /* More data? */ 00147 00148 UCHAR MiniportLunExtension[1]; /* must be the last entry */ 00149 } SCSI_PORT_LUN_EXTENSION, *PSCSI_PORT_LUN_EXTENSION; 00150 00151 /* Structures for inquiries support */ 00152 00153 typedef struct _SCSI_LUN_INFO 00154 { 00155 UCHAR PathId; 00156 UCHAR TargetId; 00157 UCHAR Lun; 00158 BOOLEAN DeviceClaimed; 00159 PVOID DeviceObject; 00160 struct _SCSI_LUN_INFO *Next; 00161 UCHAR InquiryData[INQUIRYDATABUFFERSIZE]; 00162 } SCSI_LUN_INFO, *PSCSI_LUN_INFO; 00163 00164 typedef struct _SCSI_BUS_SCAN_INFO 00165 { 00166 USHORT Length; 00167 UCHAR LogicalUnitsCount; 00168 UCHAR BusIdentifier; 00169 PSCSI_LUN_INFO LunInfo; 00170 } SCSI_BUS_SCAN_INFO, *PSCSI_BUS_SCAN_INFO; 00171 00172 typedef struct _BUSES_CONFIGURATION_INFORMATION 00173 { 00174 UCHAR NumberOfBuses; 00175 PSCSI_BUS_SCAN_INFO BusScanInfo[1]; 00176 } BUSES_CONFIGURATION_INFORMATION, *PBUSES_CONFIGURATION_INFORMATION; 00177 00178 00179 typedef struct _SCSI_PORT_INTERRUPT_DATA 00180 { 00181 ULONG Flags; /* Interrupt-time flags */ 00182 PSCSI_REQUEST_BLOCK_INFO CompletedRequests; /* Linked list of Srb info data */ 00183 PSCSI_PORT_LUN_EXTENSION CompletedAbort; 00184 PSCSI_PORT_LUN_EXTENSION ReadyLun; 00185 PHW_TIMER HwScsiTimer; 00186 ULONG MiniportTimerValue; 00187 } SCSI_PORT_INTERRUPT_DATA, *PSCSI_PORT_INTERRUPT_DATA; 00188 00189 00190 /* Only for interrupt data saving function */ 00191 typedef struct _SCSI_PORT_SAVE_INTERRUPT 00192 { 00193 PSCSI_PORT_INTERRUPT_DATA InterruptData; 00194 struct _SCSI_PORT_DEVICE_EXTENSION *DeviceExtension; 00195 } SCSI_PORT_SAVE_INTERRUPT, *PSCSI_PORT_SAVE_INTERRUPT; 00196 00197 /* 00198 * SCSI_PORT_DEVICE_EXTENSION 00199 * 00200 * DESCRIPTION 00201 * First part of the port objects device extension. The second 00202 * part is the miniport-specific device extension. 00203 */ 00204 00205 typedef struct _SCSI_PORT_DEVICE_EXTENSION 00206 { 00207 ULONG Length; 00208 ULONG MiniPortExtensionSize; 00209 PPORT_CONFIGURATION_INFORMATION PortConfig; 00210 PBUSES_CONFIGURATION_INFORMATION BusesConfig; 00211 PVOID NonCachedExtension; 00212 ULONG PortNumber; 00213 00214 LONG ActiveRequestCounter; 00215 ULONG SrbFlags; 00216 ULONG Flags; 00217 00218 ULONG BusNum; 00219 ULONG MaxTargedIds; 00220 ULONG MaxLunCount; 00221 00222 KSPIN_LOCK IrqLock; /* Used when there are 2 irqs */ 00223 ULONG SequenceNumber; /* Global sequence number for packets */ 00224 KSPIN_LOCK SpinLock; 00225 PKINTERRUPT Interrupt[2]; 00226 PIRP CurrentIrp; 00227 ULONG IrpFlags; 00228 00229 SCSI_PORT_TIMER_STATES TimerState; 00230 LONG TimerCount; 00231 00232 KTIMER MiniportTimer; 00233 KDPC MiniportTimerDpc; 00234 00235 PMAPPED_ADDRESS MappedAddressList; 00236 00237 ULONG LunExtensionSize; 00238 PSCSI_PORT_LUN_EXTENSION LunExtensionList[LUS_NUMBER]; 00239 00240 SCSI_PORT_INTERRUPT_DATA InterruptData; 00241 00242 /* SRB extension stuff*/ 00243 ULONG SrbExtensionSize; 00244 PVOID SrbExtensionBuffer; 00245 PVOID FreeSrbExtensions; 00246 00247 /* SRB information */ 00248 PSCSI_REQUEST_BLOCK_INFO SrbInfo; 00249 PSCSI_REQUEST_BLOCK_INFO FreeSrbInfo; 00250 ULONG SrbDataCount; 00251 00252 IO_SCSI_CAPABILITIES PortCapabilities; 00253 00254 PDEVICE_OBJECT DeviceObject; 00255 PCONTROLLER_OBJECT ControllerObject; 00256 00257 PHW_INITIALIZE HwInitialize; 00258 PHW_STARTIO HwStartIo; 00259 PHW_INTERRUPT HwInterrupt; 00260 PHW_RESET_BUS HwResetBus; 00261 PHW_DMA_STARTED HwDmaStarted; 00262 PHW_TIMER HwScsiTimer; 00263 00264 PSCSI_REQUEST_BLOCK OriginalSrb; 00265 SCSI_REQUEST_BLOCK InternalSrb; 00266 SENSE_DATA InternalSenseData; 00267 00268 /* DMA related stuff */ 00269 PADAPTER_OBJECT AdapterObject; 00270 ULONG MapRegisterCount; 00271 BOOLEAN MapBuffers; 00272 BOOLEAN MapRegisters; 00273 PVOID MapRegisterBase; 00274 00275 /* Features */ 00276 BOOLEAN CachesData; 00277 BOOLEAN SupportsTaggedQueuing; 00278 BOOLEAN SupportsAutoSense; 00279 BOOLEAN MultipleReqsPerLun; 00280 BOOLEAN ReceiveEvent; 00281 00282 PHYSICAL_ADDRESS PhysicalAddress; 00283 ULONG CommonBufferLength; 00284 ULONG InterruptLevel[2]; 00285 ULONG IoAddress; 00286 00287 BOOLEAN NeedSrbExtensionAlloc; 00288 BOOLEAN NeedSrbDataAlloc; 00289 00290 ULONG RequestsNumber; 00291 00292 ULONG InterruptCount; 00293 00294 UCHAR MiniPortDeviceExtension[1]; /* must be the last entry */ 00295 } SCSI_PORT_DEVICE_EXTENSION, *PSCSI_PORT_DEVICE_EXTENSION; 00296 00297 typedef struct _RESETBUS_PARAMS 00298 { 00299 ULONG PathId; 00300 PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; 00301 } RESETBUS_PARAMS, *PRESETBUS_PARAMS; Generated on Sat May 26 2012 04:27:02 for ReactOS by
1.7.6.1
|