2010-04-05 10:31:37

by James Hogan

[permalink] [raw]
Subject: [PATCH] watchdog docs: Fix use of WDIOC_SETOPTIONS ioctl.

In the watchdog-test program and watchdog-api.txt, pass the values to
the WDIOC_SETOPTIONS ioctl as a pointer to an integer containing the
values intead of directly in the third ioctl argument. The actual
watchdog drivers in drivers/watchdog don't read the options directly
from the argument but use get_user and copy_from_user.

Signed-off-by: James Hogan <[email protected]>
---
Documentation/watchdog/src/watchdog-test.c | 8 ++++++--
Documentation/watchdog/watchdog-api.txt | 5 ++---
2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/Documentation/watchdog/src/watchdog-test.c
b/Documentation/watchdog/src/watchdog-test.c
index a750532..63fdc34 100644
--- a/Documentation/watchdog/src/watchdog-test.c
+++ b/Documentation/watchdog/src/watchdog-test.c
@@ -31,6 +31,8 @@ static void keep_alive(void)
*/
int main(int argc, char *argv[])
{
+ int flags;
+
fd = open("/dev/watchdog", O_WRONLY);

if (fd == -1) {
@@ -41,12 +43,14 @@ int main(int argc, char *argv[])

if (argc > 1) {
if (!strncasecmp(argv[1], "-d", 2)) {
- ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
+ flags = WDIOS_DISABLECARD;
+ ioctl(fd, WDIOC_SETOPTIONS, &flags);
fprintf(stderr, "Watchdog card disabled.\n");
fflush(stderr);
exit(0);
} else if (!strncasecmp(argv[1], "-e", 2)) {
- ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
+ flags = WDIOS_ENABLECARD;
+ ioctl(fd, WDIOC_SETOPTIONS, &flags);
fprintf(stderr, "Watchdog card enabled.\n");
fflush(stderr);
exit(0);
diff --git a/Documentation/watchdog/watchdog-api.txt
b/Documentation/watchdog/watchdog-api.txt
index 4cc4ba9..eb7132e 100644
--- a/Documentation/watchdog/watchdog-api.txt
+++ b/Documentation/watchdog/watchdog-api.txt
@@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit.
ioctl(fd, WDIOC_GETTEMP, &temperature);

Finally the SETOPTIONS ioctl can be used to control some aspects of
-the cards operation; right now the pcwd driver is the only one
-supporting this ioctl.
+the cards operation.

int options = 0;
- ioctl(fd, WDIOC_SETOPTIONS, options);
+ ioctl(fd, WDIOC_SETOPTIONS, &options);

The following options are available:

--
1.6.6.1


2010-04-06 08:51:47

by Wim Van Sebroeck

[permalink] [raw]
Subject: Re: [PATCH] watchdog docs: Fix use of WDIOC_SETOPTIONS ioctl.

Hi James,

Will be added to the watchdog fixes that I'm preparing.

Thanks,
Wim.

> In the watchdog-test program and watchdog-api.txt, pass the values to
> the WDIOC_SETOPTIONS ioctl as a pointer to an integer containing the
> values intead of directly in the third ioctl argument. The actual
> watchdog drivers in drivers/watchdog don't read the options directly
> from the argument but use get_user and copy_from_user.
>
> Signed-off-by: James Hogan <[email protected]>
> ---
> Documentation/watchdog/src/watchdog-test.c | 8 ++++++--
> Documentation/watchdog/watchdog-api.txt | 5 ++---
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/watchdog/src/watchdog-test.c
> b/Documentation/watchdog/src/watchdog-test.c
> index a750532..63fdc34 100644
> --- a/Documentation/watchdog/src/watchdog-test.c
> +++ b/Documentation/watchdog/src/watchdog-test.c
> @@ -31,6 +31,8 @@ static void keep_alive(void)
> */
> int main(int argc, char *argv[])
> {
> + int flags;
> +
> fd = open("/dev/watchdog", O_WRONLY);
>
> if (fd == -1) {
> @@ -41,12 +43,14 @@ int main(int argc, char *argv[])
>
> if (argc > 1) {
> if (!strncasecmp(argv[1], "-d", 2)) {
> - ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
> + flags = WDIOS_DISABLECARD;
> + ioctl(fd, WDIOC_SETOPTIONS, &flags);
> fprintf(stderr, "Watchdog card disabled.\n");
> fflush(stderr);
> exit(0);
> } else if (!strncasecmp(argv[1], "-e", 2)) {
> - ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
> + flags = WDIOS_ENABLECARD;
> + ioctl(fd, WDIOC_SETOPTIONS, &flags);
> fprintf(stderr, "Watchdog card enabled.\n");
> fflush(stderr);
> exit(0);
> diff --git a/Documentation/watchdog/watchdog-api.txt
> b/Documentation/watchdog/watchdog-api.txt
> index 4cc4ba9..eb7132e 100644
> --- a/Documentation/watchdog/watchdog-api.txt
> +++ b/Documentation/watchdog/watchdog-api.txt
> @@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit.
> ioctl(fd, WDIOC_GETTEMP, &temperature);
>
> Finally the SETOPTIONS ioctl can be used to control some aspects of
> -the cards operation; right now the pcwd driver is the only one
> -supporting this ioctl.
> +the cards operation.
>
> int options = 0;
> - ioctl(fd, WDIOC_SETOPTIONS, options);
> + ioctl(fd, WDIOC_SETOPTIONS, &options);
>
> The following options are available:
>
> --
> 1.6.6.1