]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/IOFilterInterruptEventSource.cpp
xnu-6153.121.1.tar.gz
[apple/xnu.git] / iokit / Kernel / IOFilterInterruptEventSource.cpp
index e3b9803cf3b813343fadfae0401b7e032a681a2c..5e3371a10445859e58d5e38b5a1cbc81dfb53abb 100644 (file)
@@ -84,7 +84,7 @@ IOFilterInterruptEventSource::interruptEventSource(OSObject *inOwner,
     IOService *inProvider,
     int inIntIndex)
 {
-       return 0;
+       return NULL;
 }
 
 bool
@@ -122,7 +122,7 @@ IOFilterInterruptEventSource
        if (me
            && !me->init(inOwner, inAction, inFilterAction, inProvider, inIntIndex)) {
                me->release();
-               return 0;
+               return NULL;
        }
 
        return me;
@@ -141,14 +141,15 @@ IOFilterInterruptEventSource
 
        FilterBlock filter = Block_copy(inFilterAction);
        if (!filter) {
-               return 0;
+               OSSafeReleaseNULL(me);
+               return NULL;
        }
 
        if (me
            && !me->init(inOwner, (Action) NULL, (Filter) filter, inProvider, inIntIndex)) {
                me->release();
                Block_release(filter);
-               return 0;
+               return NULL;
        }
        me->flags |= kFilterBlock;
        me->setActionBlock((IOEventSource::ActionBlock) inAction);
@@ -220,9 +221,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 +274,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.