From dfec8ccacf26dadd8deda1cb7f8d92cc4aa0df25 Mon Sep 17 00:00:00 2001 From: Michal Kubecek Date: Mon, 27 Nov 2017 08:24:36 +0100 Subject: [PATCH] vmmon: convert timers to use timer_setup() With version 4.15-rc1, conversion to new timer interface is finished and old interface using init_timer() is no longer available. Convert both users to new one. --- vmmon-only/include/compat_timer.h | 33 +++++++++++++++++++++++++++++++ vmmon-only/linux/driver.c | 7 +++---- vmmon-only/linux/hostif.c | 6 +++--- 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 vmmon-only/include/compat_timer.h diff --git a/vmmon-only/include/compat_timer.h b/vmmon-only/include/compat_timer.h new file mode 100644 index 0000000..5faeab1 --- /dev/null +++ b/vmmon-only/include/compat_timer.h @@ -0,0 +1,33 @@ +#ifndef __COMPAT_TIMER_H__ +# define __COMPAT_TIMER_H__ + +#include + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)) && !defined(timer_setup) + +typedef unsigned long compat_timer_arg_t; + +static inline void compat_timer_setup(struct timer_list *timer, + void (*func)(compat_timer_arg_t), + unsigned int flags) +{ + init_timer(timer); + timer->function = func; + timer->data = 0; + timer->flags = flags; +} + +#else /* new timer interface since 4.15 */ + +typedef struct timer_list *compat_timer_arg_t; + +static inline void compat_timer_setup(struct timer_list *timer, + void (*func)(compat_timer_arg_t), + unsigned int flags) +{ + timer_setup(timer, func, flags); +} + +#endif /* new timer interface since 4.15 */ + +#endif /* __COMPAT_TIMER_H__ */ diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c index 3080525..e7a52d0 100644 --- a/vmmon-only/linux/driver.c +++ b/vmmon-only/linux/driver.c @@ -21,6 +21,7 @@ #define EXPORT_SYMTAB +#include "compat_timer.h" #include #include #include @@ -216,7 +217,7 @@ LinuxDriverEstimateTSCkHz(void) *---------------------------------------------------------------------- */ static void -LinuxDriverEstimateTSCkHzDeferred(unsigned long data) +LinuxDriverEstimateTSCkHzDeferred(compat_timer_arg_t unused) { LinuxDriverEstimateTSCkHz(); } @@ -251,9 +252,7 @@ LinuxDriverInitTSCkHz(void) } LinuxDriverReadTSCAndUptime(&tsckHzStartTime); - tscTimer.function = LinuxDriverEstimateTSCkHzDeferred; tscTimer.expires = jiffies + 4 * HZ; - tscTimer.data = 0; add_timer(&tscTimer); } @@ -335,7 +334,7 @@ init_module(void) linuxState.deviceName, linuxState.major, linuxState.minor); HostIF_InitUptime(); - init_timer(&tscTimer); + compat_timer_setup(&tscTimer, LinuxDriverEstimateTSCkHzDeferred, 0); LinuxDriverInitTSCkHz(); Vmx86_InitIDList(); diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c index 1a37365..1f583f3 100644 --- a/vmmon-only/linux/hostif.c +++ b/vmmon-only/linux/hostif.c @@ -29,6 +29,7 @@ #include "driver-config.h" /* Must come before vmware.h --hpreg */ +#include "compat_timer.h" #include #include #include @@ -1705,7 +1706,7 @@ HostIFReadUptimeWork(unsigned long *j) // OUT: current jiffies */ static void -HostIFUptimeResyncMono(unsigned long data) // IN: ignored +HostIFUptimeResyncMono(compat_timer_arg_t unused) // IN: ignored { unsigned long jifs; uintptr_t flags; @@ -1767,8 +1768,7 @@ HostIF_InitUptime(void) -(tv.tv_usec * (UPTIME_FREQ / 1000000) + tv.tv_sec * UPTIME_FREQ)); - init_timer(&uptimeState.timer); - uptimeState.timer.function = HostIFUptimeResyncMono; + compat_timer_setup(&uptimeState.timer, HostIFUptimeResyncMono, 0); mod_timer(&uptimeState.timer, jiffies + HZ); }