kernel timer API rework
In config/kernel-timer.m4 refactor slightly to check more generally
for the new timer_setup() APIs, but also check the callback signature
because some kernels (notably 4.14) have the new timer_setup() API but
use the old callback signature. Also add a check for a flags member in
struct timer_list, which was added in 4.1-rc8.
Add compatibility shims to include/spl/sys/timer.h to allow using the
new timer APIs with the only two caveats being that the callback
argument type must be declared as spl_timer_list_t and an explicit
assignment is required to get the timer variable for the timer_of()
macro. So the callback would look like this:
c
__cv_wakeup(spl_timer_list_t t)
{
struct timer_list *tmr = (struct timer_list *)t;
struct thing *parent = from_timer(parent, tmr,
parent_timer_field);
... /* do stuff with parent */Make some minor changes to spl-condvar.c and spl-taskq.c to use the
new timer APIs instead of conditional code.
Reviewed-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Closes #8647