diff options
author | Rasmus Villemoes <rasmus.villemoes@prevas.dk> | 2017-05-30 04:56:45 -0400 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2017-07-03 07:59:05 -0400 |
commit | c013b65ad8a1e132f733404809afc72f7d00e768 (patch) | |
tree | 6ff27ee4ea3e3209d53179f5b27531d297cd93bf | |
parent | e7bf02895f06c0603af800c4bfce3ca4ede9147d (diff) |
watchdog: introduce watchdog_worker_should_ping helper
This will be useful when the condition becomes slightly more
complicated in the next patch.
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Esben Haabendal <esben@haabendal.dk>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r-- | drivers/watchdog/watchdog_dev.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 4bc7ab60b12c..0826e663bd5a 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c | |||
@@ -195,18 +195,23 @@ static int watchdog_ping(struct watchdog_device *wdd) | |||
195 | return __watchdog_ping(wdd); | 195 | return __watchdog_ping(wdd); |
196 | } | 196 | } |
197 | 197 | ||
198 | static bool watchdog_worker_should_ping(struct watchdog_core_data *wd_data) | ||
199 | { | ||
200 | struct watchdog_device *wdd = wd_data->wdd; | ||
201 | |||
202 | return wdd && (watchdog_active(wdd) || watchdog_hw_running(wdd)); | ||
203 | } | ||
204 | |||
198 | static void watchdog_ping_work(struct work_struct *work) | 205 | static void watchdog_ping_work(struct work_struct *work) |
199 | { | 206 | { |
200 | struct watchdog_core_data *wd_data; | 207 | struct watchdog_core_data *wd_data; |
201 | struct watchdog_device *wdd; | ||
202 | 208 | ||
203 | wd_data = container_of(to_delayed_work(work), struct watchdog_core_data, | 209 | wd_data = container_of(to_delayed_work(work), struct watchdog_core_data, |
204 | work); | 210 | work); |
205 | 211 | ||
206 | mutex_lock(&wd_data->lock); | 212 | mutex_lock(&wd_data->lock); |
207 | wdd = wd_data->wdd; | 213 | if (watchdog_worker_should_ping(wd_data)) |
208 | if (wdd && (watchdog_active(wdd) || watchdog_hw_running(wdd))) | 214 | __watchdog_ping(wd_data->wdd); |
209 | __watchdog_ping(wdd); | ||
210 | mutex_unlock(&wd_data->lock); | 215 | mutex_unlock(&wd_data->lock); |
211 | } | 216 | } |
212 | 217 | ||