patches/timer_setup.cocci (39 lines of code) (raw):

@ setup @ identifier gve_stats_report_timer; struct gve_priv *priv; @@ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) +setup_timer(&priv->stats_report_timer, gve_stats_report_timer, + (unsigned long)priv); +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) */ timer_setup(&priv->stats_report_timer, gve_stats_report_timer, 0); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) */ @ service @ type timer_list; identifier gve_stats_report_timer, t, priv, service_timer; @@ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) +static void gve_stats_report_timer(unsigned long data) +{ + struct gve_priv *priv = (struct gve_priv *)data; + mod_timer(&priv->stats_report_timer, + round_jiffies(jiffies + + msecs_to_jiffies(priv->stats_report_timer_period))); + gve_stats_report_schedule(priv); +} +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) */ static void gve_stats_report_timer(timer_list *t) { struct gve_priv *priv = from_timer(priv, t, stats_report_timer); ... } +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) */ @ struct_size @ identifier member; expression result, p, size1, size2; @@ +#if !defined(struct_size) || !defined(size_add) +result = sizeof(*p) + sizeof((p)->member[0]) * (size1 + size2); +#else result = struct_size(p, member, size_add(size1, size2)); +#endif