watchdog: WatchDog Timer Driver Core - Add WDIOC_KEEPALIVE ioctl

This part add's the WDIOC_KEEPALIVE ioctl functionality to the
WatchDog Timer Driver Core framework. Please note that the
WDIOF_KEEPALIVEPING bit has to be set in the watchdog_info
options field.

Signed-off-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
This commit is contained in:
Wim Van Sebroeck 2011-07-22 18:57:23 +00:00
parent 2fa03560ab
commit c2dc00e494
2 changed files with 8 additions and 0 deletions

View File

@ -101,6 +101,9 @@ they are supported. These optional routines/operations are:
the watchdog timer driver core does: to send a keepalive ping to the watchdog the watchdog timer driver core does: to send a keepalive ping to the watchdog
timer hardware it will either use the ping operation (when available) or the timer hardware it will either use the ping operation (when available) or the
start operation (when the ping operation is not available). start operation (when the ping operation is not available).
(Note: the WDIOC_KEEPALIVE ioctl call will only be active when the
WDIOF_KEEPALIVEPING bit has been set in the option field on the watchdog's
info structure).
* status: this routine checks the status of the watchdog timer device. The * status: this routine checks the status of the watchdog timer device. The
status of the device is reported with watchdog WDIOF_* status flags/bits. status of the device is reported with watchdog WDIOF_* status flags/bits.

View File

@ -120,6 +120,11 @@ static long watchdog_ioctl(struct file *file, unsigned int cmd,
return put_user(val, p); return put_user(val, p);
case WDIOC_GETBOOTSTATUS: case WDIOC_GETBOOTSTATUS:
return put_user(wdd->bootstatus, p); return put_user(wdd->bootstatus, p);
case WDIOC_KEEPALIVE:
if (!(wdd->info->options & WDIOF_KEEPALIVEPING))
return -EOPNOTSUPP;
watchdog_ping(wdd);
return 0;
default: default:
return -ENOTTY; return -ENOTTY;
} }