- virtual IOReturn registerInterrupt(IOService *nub, int source,
- void *target,
- IOInterruptHandler handler,
- void *refCon);
- virtual IOReturn unregisterInterrupt(IOService *nub, int source);
-
- virtual IOReturn getInterruptType(IOService *nub, int source,
- int *interruptType);
-
- virtual IOReturn enableInterrupt(IOService *nub, int source);
- virtual IOReturn disableInterrupt(IOService *nub, int source);
- virtual IOReturn causeInterrupt(IOService *nub, int source);
-
- virtual IOInterruptAction getInterruptHandlerAddress(void);
- virtual IOReturn handleInterrupt(void *refCon, IOService *nub,
- int source);
-
- // Methods to be overridden for simplifed interrupt controller subclasses.
-
- virtual bool vectorCanBeShared(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
- virtual void initVector(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
- virtual int getVectorType(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
- virtual void disableVectorHard(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
- virtual void enableVector(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
- virtual void causeVector(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
-
- OSMetaClassDeclareReservedUnused(IOInterruptController, 0);
- OSMetaClassDeclareReservedUnused(IOInterruptController, 1);
- OSMetaClassDeclareReservedUnused(IOInterruptController, 2);
- OSMetaClassDeclareReservedUnused(IOInterruptController, 3);
- OSMetaClassDeclareReservedUnused(IOInterruptController, 4);
- OSMetaClassDeclareReservedUnused(IOInterruptController, 5);
+// Generic methods (not to be overriden).
+
+ void timeStampSpuriousInterrupt(void);
+ void timeStampInterruptHandlerStart(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
+ void timeStampInterruptHandlerEnd(IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);
+
+private:
+ void timeStampInterruptHandlerInternal(bool isStart, IOInterruptVectorNumber vectorNumber, IOInterruptVector *vector);