OSDN Git Service

staging: unisys: visorbus: use kernel timer instead of workqueue
authorTim Sell <Timothy.Sell@unisys.com>
Sat, 11 Jun 2016 01:48:08 +0000 (21:48 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Aug 2016 18:44:24 +0000 (20:44 +0200)
commit9ebab64952237f7b9b263d6dc0cdf31e83a2d5e7
tree98987dcb9aba3bdb27ab20e053fee6749f0dea96
parent83011b6cbe7c597c73b31c41021dc71f78dcef7b
staging: unisys: visorbus: use kernel timer instead of workqueue

A kernel timer is now used as the vehicle to periodically call the
channel_interrupt function of registered visor drivers, instead of a
workqueue.

This simplifies a lot of things by making periodic_work.c and
periodic_work.h no longer necessary.  This change also means that the
channel_interrupt() callbacks registered by visor drivers (via
visorbus_register_visor_driver()) will now be called in atomic context
(i.e., canNOT sleep) rather than kernel thread context (CAN sleep).
Fortunately this did NOT necessitate any change to the existing
channel_interrupt() callbacks, because none of them ever perform any
operations that would be invalid in atomic context.

Signed-off-by: Tim Sell <Timothy.Sell@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Acked-By: Neil Horman <nhorman@tuxdriver.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/include/visorbus.h
drivers/staging/unisys/visorbus/visorbus_main.c