Missing API function in DriverKit for canceling timer event source

Hi,

I'm working on a project that requires porting my KEXT driver to DriverKit system extension ( DEXT ). I've managed to re-write most of functions using DriverKit but I couldn't found a function for cancelling a scheduled timer.

What I try to make is waiting for an interrupt with a timeout period. And if the interrupt arrives in certain time period I need to cancel timeout timer and send async response to the user app. I'm also open to the suggestions.

Here is the code fragment for IOKit that I need to convert to DriverKit

// ... initialization code fragment ( error handling parts deleted )
m_timeout_timer = IOTimerEventSource::timerEventSource(this, timer_fired_pc_recv);

IOReturn result = m_workLoop->addEventSource(timer);
// ... starting the timeout counter
m_timeout_timer->setTimeoutMS(timeout_in_ms);
// ... some time later (cancel part)
m_timeout_timer->cancelTimeout();

And equivalent code in DriverKit

// ... initialization code fragment ( error handling parts deleted )
ret = IOTimerDispatchSource::Create(ivars->default_dispatch_queue, &ivars->timer_dispatchSource);

// starting timer
timer_dispatchSource->WakeAtTime(kIOTimerClockMonotonicRaw, currentTime + fiveSecondsInNanoSeconds, twoSecondsInNanoSeconds);

//  missing part here

I did see the member method Cancel in IOTimerDispatchSource but it is kind of termination to the lifetime of IOTimerDispatchSource

Missing API function in DriverKit for canceling timer event source
 
 
Q