CreateDeviceInterrupt
Called to create an IOInterruptEventSource for the device. Subclasses may wish to use a different interrupt index than 0 (e.g. for using PCI Message Signaled Interrupts) or might not need an interrupt at all (virtual HBA).
Declaration
virtual IOInterruptEventSource * CreateDeviceInterrupt (
IOInterruptEventSource::Action action,
IOFilterInterruptEventSource::Filter filter,
IOService *provider );Parameters
- action:
A pointer to the action routine that should be passed to either IOInterruptEventSource::interruptEventSource() or IOFilterInterruptEventSource::filterInterruptEventSource as the method to call when an interrupt occurs for the device (sometimes called the "deferred procedure call" or the "secondary context method". By passing this routine along, it will properly wire up the HandleInterruptRequest() method you should override to handle interrupts.
- filter:
A pointer to the filter routine that should be passed to IOFilterInterruptEventSource::filterInterruptEventSource as the method to call at primary interrupt time when an interrupt occurs for the device. By passing this routine along, it will properly wire up the FilterInterruptRequest() method you may override to handle primary interrupts.
Return Value
IOInterruptEventSource. May return NULL if and only if there is no hardware interrupt associated with this device.
See Also
Miscellaneous
CompleteParallelTaskCreateTargetForID(SCSIDeviceIdentifier)CreateTargetForID(SCSIDeviceIdentifier, OSDictionary *)DestroyTargetForIDDisableInterruptDoesHBAPerformAutoSenseDoesHBAPerformDeviceManagementDoesHBASupportMultiPathingDoesHBASupportSCSIParallelFeatureEnableInterruptExecuteParallelTaskFilterInterruptRequestFindTaskForAddressFindTaskForControllerIdentifierFreeSCSIParallelTaskGetAutoSenseDataGetAutoSenseDataSizeGetCommandDescriptorBlockGetCommandDescriptorBlockSizeGetCommandGateGetDataBufferGetDataBufferOffsetGetDataTransferDirectionGetDMACommandGetHBADataDescriptorGetHBADataPointerGetHBADataSizeGetHBATargetDataPointerGetHBATargetDataSizeGetLogicalUnitBytesGetLogicalUnitNumberGetProviderGetRealizedDataTransferCountGetRequestedDataTransferCountGetSCSIDomainIdentifierGetSCSIParallelFeatureNegotiationGetSCSIParallelFeatureNegotiationCountGetSCSIParallelFeatureNegotiationResultGetSCSIParallelFeatureNegotiationResultCountGetSCSIParallelTaskGetSCSITaskIdentifierGetTaggedTaskIdentifierGetTargetForIDGetTargetIdentifierGetTaskAttributeGetTimeoutDurationGetWorkLoopHandleInterruptRequestHandleTimeoutIncrementRealizedDataTransferCountInitializeControllerInitializeDMASpecificationInitializeTargetForIDNotifyClientsOfBusResetNotifyClientsOfPortStatusChangeProcessParallelTaskRemoveHBAPropertyRemoveTargetPropertyReportHBAConstraintsReportHBAHighestLogicalUnitNumberReportHBASpecificDeviceDataSizeReportHBASpecificTaskDataSizeReportHighestSupportedDeviceIDReportInitiatorIdentifierReportMaximumTaskCountResumeServicesSetAutoSenseDataSetControllerTaskIdentifierSetHBAPropertySetRealizedDataTransferCountSetSCSIParallelFeatureNegotiationResultSetTargetPropertySetTimeoutForTaskSignalInterruptStartControllerStopControllerSuspendServicesTerminateController