* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
+#define IOKIT_ENABLE_SHARED_PTR
+
#include <IOKit/IOFilterInterruptEventSource.h>
#include <IOKit/IOService.h>
#include <IOKit/IOKitDebug.h>
return false;
}
-IOInterruptEventSource *
+OSSharedPtr<IOInterruptEventSource>
IOFilterInterruptEventSource::interruptEventSource(OSObject *inOwner,
Action inAction,
IOService *inProvider,
int inIntIndex)
{
- return 0;
+ return NULL;
}
bool
return true;
}
-IOFilterInterruptEventSource *
+OSSharedPtr<IOFilterInterruptEventSource>
IOFilterInterruptEventSource
::filterInterruptEventSource(OSObject *inOwner,
Action inAction,
IOService *inProvider,
int inIntIndex)
{
- IOFilterInterruptEventSource *me = new IOFilterInterruptEventSource;
+ OSSharedPtr<IOFilterInterruptEventSource> me = OSMakeShared<IOFilterInterruptEventSource>();
if (me
&& !me->init(inOwner, inAction, inFilterAction, inProvider, inIntIndex)) {
- me->release();
- return 0;
+ return nullptr;
}
return me;
}
-IOFilterInterruptEventSource *
+OSSharedPtr<IOFilterInterruptEventSource>
IOFilterInterruptEventSource
::filterInterruptEventSource(OSObject *inOwner,
IOService *inProvider,
ActionBlock inAction,
FilterBlock inFilterAction)
{
- IOFilterInterruptEventSource *me = new IOFilterInterruptEventSource;
+ OSSharedPtr<IOFilterInterruptEventSource> me = OSMakeShared<IOFilterInterruptEventSource>();
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);
}
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.
}
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.