]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/DriverKit/IOInterruptDispatchSource.iig
xnu-6153.141.1.tar.gz
[apple/xnu.git] / iokit / DriverKit / IOInterruptDispatchSource.iig
index ecd4b5c806a4e046ffd895bd2662fe96d359fe65..855d6beb14da3cdeba5e26f25c5ac3f1e0c8f815 100644 (file)
@@ -37,6 +37,11 @@ struct IOInterruptDispatchSourcePayload {
        uint64_t count;
 };
 
+enum {
+       kIOInterruptDispatchSourceTypeEdge  = 0x00000000,
+       kIOInterruptDispatchSourceTypeLevel = 0x00000001
+};
+
 /*!
  * @class IOInterruptDispatchSource
  *
@@ -67,6 +72,22 @@ public:
            IODispatchQueue * queue,
            IOInterruptDispatchSource ** source) LOCAL;
 
+    /*!
+     * @brief       Returns the type of interrupt used for a device supplying hardware interrupts, by index from an IOService provider.
+     * @param       provider The IOService object representing the HW device producing the interrupt.
+     * @param       index Index for the interrupt.
+     * @param          interruptType The interrupt type for the interrupt source will be stored here.
+     *              kIOInterruptTypeEdge will be returned for edge-trigggered sources.
+     *              kIOInterruptTypeLevel will be returned for level-trigggered sources.
+     *              Other flags may be returned depending on the provider, for example PCI flags for messaged interrupts.
+     * @return      kIOReturnSuccess on success. See IOReturn.h for error codes.
+     */
+
+       static kern_return_t
+       GetInterruptType(IOService * provider,
+           uint32_t index,
+           uint64_t * interruptType);
+
        virtual bool
        init() override;