X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/0a7de7458d150b5d4dffc935ba399be265ef0a1a..c3c9b80d004dbbfdf763edeb97968c6997e3b45b:/iokit/Kernel/IOFilterInterruptEventSource.cpp diff --git a/iokit/Kernel/IOFilterInterruptEventSource.cpp b/iokit/Kernel/IOFilterInterruptEventSource.cpp index e3b9803cf..a5d36fe37 100644 --- a/iokit/Kernel/IOFilterInterruptEventSource.cpp +++ b/iokit/Kernel/IOFilterInterruptEventSource.cpp @@ -26,6 +26,8 @@ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ +#define IOKIT_ENABLE_SHARED_PTR + #include #include #include @@ -78,13 +80,13 @@ IOFilterInterruptEventSource::init(OSObject *inOwner, return false; } -IOInterruptEventSource * +OSSharedPtr IOFilterInterruptEventSource::interruptEventSource(OSObject *inOwner, Action inAction, IOService *inProvider, int inIntIndex) { - return 0; + return NULL; } bool @@ -109,7 +111,7 @@ IOFilterInterruptEventSource::init(OSObject *inOwner, return true; } -IOFilterInterruptEventSource * +OSSharedPtr IOFilterInterruptEventSource ::filterInterruptEventSource(OSObject *inOwner, Action inAction, @@ -117,19 +119,18 @@ IOFilterInterruptEventSource IOService *inProvider, int inIntIndex) { - IOFilterInterruptEventSource *me = new IOFilterInterruptEventSource; + OSSharedPtr me = OSMakeShared(); if (me && !me->init(inOwner, inAction, inFilterAction, inProvider, inIntIndex)) { - me->release(); - return 0; + return nullptr; } return me; } -IOFilterInterruptEventSource * +OSSharedPtr IOFilterInterruptEventSource ::filterInterruptEventSource(OSObject *inOwner, IOService *inProvider, @@ -137,18 +138,17 @@ IOFilterInterruptEventSource ActionBlock inAction, FilterBlock inFilterAction) { - IOFilterInterruptEventSource *me = new IOFilterInterruptEventSource; + OSSharedPtr me = OSMakeShared(); FilterBlock filter = Block_copy(inFilterAction); if (!filter) { - return 0; + return nullptr; } if (me && !me->init(inOwner, (Action) NULL, (Filter) filter, inProvider, inIntIndex)) { - me->release(); Block_release(filter); - return 0; + return nullptr; } me->flags |= kFilterBlock; me->setActionBlock((IOEventSource::ActionBlock) inAction); @@ -220,9 +220,13 @@ IOFilterInterruptEventSource::normalInterruptOccurred } if (IOInterruptEventSource::reserved->statistics) { - if (IA_GET_STATISTIC_ENABLED(kInterruptAccountingFirstLevelTimeIndex)) { + if (IA_GET_STATISTIC_ENABLED(kInterruptAccountingFirstLevelTimeIndex) + || IOInterruptEventSource::reserved->statistics->enablePrimaryTimestamp) { startTime = mach_absolute_time(); } + if (IOInterruptEventSource::reserved->statistics->enablePrimaryTimestamp) { + IOInterruptEventSource::reserved->statistics->primaryTimestamp = startTime; + } } // Call the filter. @@ -269,9 +273,13 @@ IOFilterInterruptEventSource::disableInterruptOccurred } if (IOInterruptEventSource::reserved->statistics) { - if (IA_GET_STATISTIC_ENABLED(kInterruptAccountingFirstLevelTimeIndex)) { + if (IA_GET_STATISTIC_ENABLED(kInterruptAccountingFirstLevelTimeIndex) + || IOInterruptEventSource::reserved->statistics->enablePrimaryTimestamp) { startTime = mach_absolute_time(); } + if (IOInterruptEventSource::reserved->statistics->enablePrimaryTimestamp) { + IOInterruptEventSource::reserved->statistics->primaryTimestamp = startTime; + } } // Call the filter.