dahdi_dummy: 'struct timespec' -> ktime_t

Use the new ktime_t based interface for dahdi_dummy as well. dahdi_dummy
is still useful to keep around for testing purposes.

Signed-off-by: Shaun Ruffell <sruffell@sruffell.net>
This commit is contained in:
Shaun Ruffell 2019-01-10 04:07:25 +00:00
parent 9991c959ef
commit 3e2eb9ca32

View File

@ -49,9 +49,8 @@
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/slab.h> #include <linux/slab.h>
#if defined(USE_HIGHRESTIMER)
#include <linux/hrtimer.h> #include <linux/hrtimer.h>
#else #if !defined(USE_HIGHRESTIMER)
#include <linux/timer.h> #include <linux/timer.h>
#endif #endif
@ -80,7 +79,7 @@ struct dahdi_dummy {
struct dahdi_chan *chan; struct dahdi_chan *chan;
#if !defined(USE_HIGHRESTIMER) #if !defined(USE_HIGHRESTIMER)
unsigned long calls_since_start; unsigned long calls_since_start;
struct timespec start_interval; ktime_t start_interval;
#endif #endif
}; };
@ -138,36 +137,19 @@ static enum hrtimer_restart dahdi_dummy_hr_int(struct hrtimer *htmr)
return HRTIMER_RESTART; return HRTIMER_RESTART;
} }
#else #else
static unsigned long timespec_diff_ms(struct timespec *t0, struct timespec *t1)
{
long nanosec, sec;
unsigned long ms;
sec = (t1->tv_sec - t0->tv_sec);
nanosec = (t1->tv_nsec - t0->tv_nsec);
while (nanosec >= NSEC_PER_SEC) {
nanosec -= NSEC_PER_SEC;
++sec;
}
while (nanosec < 0) {
nanosec += NSEC_PER_SEC;
--sec;
}
ms = (sec * 1000) + (nanosec / 1000000L);
return ms;
}
static void dahdi_dummy_timer(TIMER_DATA_TYPE unused) static void dahdi_dummy_timer(TIMER_DATA_TYPE unused)
{ {
unsigned long ms_since_start; long ms_since_start;
struct timespec now; ktime_t now;
const unsigned long MAX_INTERVAL = 100000L; const long MAX_INTERVAL = 100000L;
const unsigned long MS_LIMIT = 3000; const long MS_LIMIT = 3000;
if (!atomic_read(&shutdown)) if (!atomic_read(&shutdown))
mod_timer(&timer, jiffies + JIFFIES_INTERVAL); mod_timer(&timer, jiffies + JIFFIES_INTERVAL);
now = current_kernel_time(); now = ktime_get();
ms_since_start = timespec_diff_ms(&ztd->start_interval, &now); ms_since_start = ktime_ms_delta(now, ztd->start_interval);
/* /*
* If the system time has changed, it is possible for us to be far * If the system time has changed, it is possible for us to be far
@ -258,7 +240,7 @@ int init_module(void)
printk(KERN_INFO "dahdi_dummy: High Resolution Timer started, good to go\n"); printk(KERN_INFO "dahdi_dummy: High Resolution Timer started, good to go\n");
#else #else
timer_setup(&timer, dahdi_dummy_timer, 0); timer_setup(&timer, dahdi_dummy_timer, 0);
ztd->start_interval = current_kernel_time(); ztd->start_interval = ktime_get();
atomic_set(&shutdown, 0); atomic_set(&shutdown, 0);
mod_timer(&timer, jiffies + JIFFIES_INTERVAL); mod_timer(&timer, jiffies + JIFFIES_INTERVAL);
#endif #endif