|
@@ -50,6 +50,7 @@ struct watchdog_device {
|
|
const struct watchdog_ops *ops;
|
|
const struct watchdog_ops *ops;
|
|
unsigned int bootstatus;
|
|
unsigned int bootstatus;
|
|
unsigned int timeout;
|
|
unsigned int timeout;
|
|
|
|
+ unsigned int pretimeout;
|
|
unsigned int min_timeout;
|
|
unsigned int min_timeout;
|
|
unsigned int max_timeout;
|
|
unsigned int max_timeout;
|
|
unsigned int min_hw_heartbeat_ms;
|
|
unsigned int min_hw_heartbeat_ms;
|
|
@@ -77,6 +78,7 @@ It contains following fields:
|
|
* timeout: the watchdog timer's timeout value (in seconds).
|
|
* timeout: the watchdog timer's timeout value (in seconds).
|
|
This is the time after which the system will reboot if user space does
|
|
This is the time after which the system will reboot if user space does
|
|
not send a heartbeat request if WDOG_ACTIVE is set.
|
|
not send a heartbeat request if WDOG_ACTIVE is set.
|
|
|
|
+* pretimeout: the watchdog timer's pretimeout value (in seconds).
|
|
* min_timeout: the watchdog timer's minimum timeout value (in seconds).
|
|
* min_timeout: the watchdog timer's minimum timeout value (in seconds).
|
|
If set, the minimum configurable value for 'timeout'.
|
|
If set, the minimum configurable value for 'timeout'.
|
|
* max_timeout: the watchdog timer's maximum timeout value (in seconds),
|
|
* max_timeout: the watchdog timer's maximum timeout value (in seconds),
|
|
@@ -121,6 +123,7 @@ struct watchdog_ops {
|
|
int (*ping)(struct watchdog_device *);
|
|
int (*ping)(struct watchdog_device *);
|
|
unsigned int (*status)(struct watchdog_device *);
|
|
unsigned int (*status)(struct watchdog_device *);
|
|
int (*set_timeout)(struct watchdog_device *, unsigned int);
|
|
int (*set_timeout)(struct watchdog_device *, unsigned int);
|
|
|
|
+ int (*set_pretimeout)(struct watchdog_device *, unsigned int);
|
|
unsigned int (*get_timeleft)(struct watchdog_device *);
|
|
unsigned int (*get_timeleft)(struct watchdog_device *);
|
|
int (*restart)(struct watchdog_device *);
|
|
int (*restart)(struct watchdog_device *);
|
|
void (*ref)(struct watchdog_device *) __deprecated;
|
|
void (*ref)(struct watchdog_device *) __deprecated;
|
|
@@ -188,6 +191,23 @@ they are supported. These optional routines/operations are:
|
|
If set_timeout is not provided but, WDIOF_SETTIMEOUT is set, the watchdog
|
|
If set_timeout is not provided but, WDIOF_SETTIMEOUT is set, the watchdog
|
|
infrastructure updates the timeout value of the watchdog_device internally
|
|
infrastructure updates the timeout value of the watchdog_device internally
|
|
to the requested value.
|
|
to the requested value.
|
|
|
|
+ If the pretimeout feature is used (WDIOF_PRETIMEOUT), then set_timeout must
|
|
|
|
+ also take care of checking if pretimeout is still valid and set up the timer
|
|
|
|
+ accordingly. This can't be done in the core without races, so it is the
|
|
|
|
+ duty of the driver.
|
|
|
|
+* set_pretimeout: this routine checks and changes the pretimeout value of
|
|
|
|
+ the watchdog. It is optional because not all watchdogs support pretimeout
|
|
|
|
+ notification. The timeout value is not an absolute time, but the number of
|
|
|
|
+ seconds before the actual timeout would happen. It returns 0 on success,
|
|
|
|
+ -EINVAL for "parameter out of range" and -EIO for "could not write value to
|
|
|
|
+ the watchdog". A value of 0 disables pretimeout notification.
|
|
|
|
+ (Note: the WDIOF_PRETIMEOUT needs to be set in the options field of the
|
|
|
|
+ watchdog's info structure).
|
|
|
|
+ If the watchdog driver does not have to perform any action but setting the
|
|
|
|
+ watchdog_device.pretimeout, this callback can be omitted. That means if
|
|
|
|
+ set_pretimeout is not provided but WDIOF_PRETIMEOUT is set, the watchdog
|
|
|
|
+ infrastructure updates the pretimeout value of the watchdog_device internally
|
|
|
|
+ to the requested value.
|
|
* get_timeleft: this routines returns the time that's left before a reset.
|
|
* get_timeleft: this routines returns the time that's left before a reset.
|
|
* restart: this routine restarts the machine. It returns 0 on success or a
|
|
* restart: this routine restarts the machine. It returns 0 on success or a
|
|
negative errno code for failure.
|
|
negative errno code for failure.
|