IrDATimerEventSource.cpp [plain text]
#include <IOKit/IOLib.h>
#include "IrDATimerEventSource.h"
#include "IrDALog.h"
#include "IrDADebugging.h"
#if (hasTracing > 0)
enum IrLogCodes
{
kLogNew = 1,
kLogFree,
kLogCancel
};
static
EventTraceCauseDesc IrLogEvents[] = {
{kLogNew, "IrDATimer: new, obj="},
{kLogFree, "IrDATimer: free, obj="},
{kLogCancel, "IrDATimer: safe cancel, cancel worked="}
};
#define XTRACE(x, y, z) IrDALogAdd( x, y, (uintptr_t)z & 0xffff, IrLogEvents, true )
#else
#define XTRACE(x,y,z) ((void)0)
#endif
#define super IOTimerEventSource
OSDefineMetaClassAndStructors(IrDATimerEventSource, IOTimerEventSource);
Boolean IrDATimerEventSource::SafeCancelTimeout()
{
Boolean cancel_ok;
AbsoluteTime_to_scalar(&abstime) = 0;
cancel_ok = thread_call_cancel((thread_call_t) calloutEntry);
XTRACE(kLogCancel, 0, cancel_ok);
return cancel_ok;
}
IrDATimerEventSource *
IrDATimerEventSource::timerEventSource(OSObject *inOwner, Action inAction)
{
IrDATimerEventSource *me = new IrDATimerEventSource;
XTRACE(kLogNew, 0, me);
if (me && !me->init(inOwner, (super::Action)inAction)) {
me->free();
return 0;
}
return me;
}