Hi Guenter,
Great thanks for your suggestion,
I have put this kind of validation into watchdog_pretimeout_invalid and watchdog_timeout_invalid.
So :
(1) set_timeout(10); ------> if this setting is successful set_pretimeout(20); -----> return fail (-EINVAL)
(2) set_timeout(10); ------> if this setting is successful set_pretimeout(10); -----> return fail (-EINVAL)
this kind of situation will not result in an invalid / unexpected timeout value.
you will see this change in my next patchset
On 21 May 2015 at 23:32, Guenter Roeck linux@roeck-us.net wrote:
On Thu, May 21, 2015 at 04:32:34PM +0800, fu.wei@linaro.org wrote:
From: Fu Wei fu.wei@linaro.org
Also update Documentation/watchdog/watchdog-kernel-api.txt to introduce: (1)the new elements in the watchdog_device and watchdog_ops struct; (2)the new API "watchdog_init_timeouts".
Reasons: (1)kernel already has two watchdog drivers are using "pretimeout": drivers/char/ipmi/ipmi_watchdog.c drivers/watchdog/kempld_wdt.c(but the definition is different) (2)some other dirvers are going to use this: ARM SBSA Generic Watchdog
Signed-off-by: Fu Wei fu.wei@linaro.org
[ ... ]
+/* Use the following function to check if a pretimeout value is invalid */ +static inline bool watchdog_pretimeout_invalid(struct watchdog_device *wdd,
unsigned int t)
+{
return ((wdd->max_pretimeout != 0) &&
(t < wdd->min_pretimeout || t > wdd->max_pretimeout));
+}
Should this function also enforce "t < wdd->timeout", and should watchdog_timeout_invalid() enforce "t > wdd->pretimeout" ?
Thanks, Guenter