lkml.org 
[lkml]   [2006]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 1/14/] Doc. sources: expose watchdog
    From: Randy Dunlap <rdunlap@xenotime.net>

    Documentation/watchdog/:
    Expose example and tool source files in the Documentation/ directory in
    their own files instead of being buried (almost hidden) in readme/txt files.

    This will make them more visible/usable to users who may need
    to use them, to developers who may need to test with them, and
    to janitors who would update them if they were more visible.

    Also, if any of these possibly should not be in the kernel tree at
    all, it will be clearer that they are here and we can discuss if
    they should be removed.

    Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
    ---
    Documentation/watchdog/pcwd-watchdog.txt | 73 -------------------------------
    Documentation/watchdog/watchdog-api.txt | 17 -------
    Documentation/watchdog/watchdog-simple.c | 15 ++++++
    Documentation/watchdog/watchdog-test.c | 68 ++++++++++++++++++++++++++++
    Documentation/watchdog/watchdog.txt | 23 ---------
    5 files changed, 87 insertions(+), 109 deletions(-)

    --- linux-2617-rc4g9-docsrc-split.orig/Documentation/watchdog/pcwd-watchdog.txt
    +++ linux-2617-rc4g9-docsrc-split/Documentation/watchdog/pcwd-watchdog.txt
    @@ -22,78 +22,9 @@
    to run the program with an "&" to run it in the background!)

    If you want to write a program to be compatible with the PC Watchdog
    - driver, simply do the following:
    + driver, simply use of modify the watchdog test program:
    + Documentation/watchdog/watchdog-test.c

    --- Snippet of code --
    -/*
    - * Watchdog Driver Test Program
    - */
    -
    -#include <stdio.h>
    -#include <stdlib.h>
    -#include <string.h>
    -#include <unistd.h>
    -#include <fcntl.h>
    -#include <sys/ioctl.h>
    -#include <linux/types.h>
    -#include <linux/watchdog.h>
    -
    -int fd;
    -
    -/*
    - * This function simply sends an IOCTL to the driver, which in turn ticks
    - * the PC Watchdog card to reset its internal timer so it doesn't trigger
    - * a computer reset.
    - */
    -void keep_alive(void)
    -{
    - int dummy;
    -
    - ioctl(fd, WDIOC_KEEPALIVE, &dummy);
    -}
    -
    -/*
    - * The main program. Run the program with "-d" to disable the card,
    - * or "-e" to enable the card.
    - */
    -int main(int argc, char *argv[])
    -{
    - fd = open("/dev/watchdog", O_WRONLY);
    -
    - if (fd == -1) {
    - fprintf(stderr, "Watchdog device not enabled.\n");
    - fflush(stderr);
    - exit(-1);
    - }
    -
    - if (argc > 1) {
    - if (!strncasecmp(argv[1], "-d", 2)) {
    - ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
    - fprintf(stderr, "Watchdog card disabled.\n");
    - fflush(stderr);
    - exit(0);
    - } else if (!strncasecmp(argv[1], "-e", 2)) {
    - ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
    - fprintf(stderr, "Watchdog card enabled.\n");
    - fflush(stderr);
    - exit(0);
    - } else {
    - fprintf(stderr, "-d to disable, -e to enable.\n");
    - fprintf(stderr, "run by itself to tick the card.\n");
    - fflush(stderr);
    - exit(0);
    - }
    - } else {
    - fprintf(stderr, "Watchdog Ticking Away!\n");
    - fflush(stderr);
    - }
    -
    - while(1) {
    - keep_alive();
    - sleep(1);
    - }
    -}
    --- End snippet --

    Other IOCTL functions include:

    --- linux-2617-rc4g9-docsrc-split.orig/Documentation/watchdog/watchdog-api.txt
    +++ linux-2617-rc4g9-docsrc-split/Documentation/watchdog/watchdog-api.txt
    @@ -34,22 +34,7 @@ activates as soon as /dev/watchdog is op
    the watchdog is pinged within a certain time, this time is called the
    timeout or margin. The simplest way to ping the watchdog is to write
    some data to the device. So a very simple watchdog daemon would look
    -like this:
    -
    -#include <stdlib.h>
    -#include <fcntl.h>
    -
    -int main(int argc, const char *argv[]) {
    - int fd=open("/dev/watchdog",O_WRONLY);
    - if (fd==-1) {
    - perror("watchdog");
    - exit(1);
    - }
    - while(1) {
    - write(fd, "\0", 1);
    - sleep(10);
    - }
    -}
    +like this source file: see Documentation/watchdog/watchdog-simple.c

    A more advanced driver could for example check that a HTTP server is
    still responding before doing the write call to ping the watchdog.
    --- /dev/null
    +++ linux-2617-rc4g9-docsrc-split/Documentation/watchdog/watchdog-simple.c
    @@ -0,0 +1,15 @@
    +#include <stdlib.h>
    +#include <fcntl.h>
    +
    +int main(int argc, const char *argv[]) {
    + int fd = open("/dev/watchdog", O_WRONLY);
    + if (fd == -1) {
    + perror("watchdog");
    + exit(1);
    + }
    + while (1) {
    + write(fd, "\0", 1);
    + fsync(fd);
    + sleep(10);
    + }
    +}
    --- /dev/null
    +++ linux-2617-rc4g9-docsrc-split/Documentation/watchdog/watchdog-test.c
    @@ -0,0 +1,68 @@
    +/*
    + * Watchdog Driver Test Program
    + */
    +
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <unistd.h>
    +#include <fcntl.h>
    +#include <sys/ioctl.h>
    +#include <linux/types.h>
    +#include <linux/watchdog.h>
    +
    +int fd;
    +
    +/*
    + * This function simply sends an IOCTL to the driver, which in turn ticks
    + * the PC Watchdog card to reset its internal timer so it doesn't trigger
    + * a computer reset.
    + */
    +void keep_alive(void)
    +{
    + int dummy;
    +
    + ioctl(fd, WDIOC_KEEPALIVE, &dummy);
    +}
    +
    +/*
    + * The main program. Run the program with "-d" to disable the card,
    + * or "-e" to enable the card.
    + */
    +int main(int argc, char *argv[])
    +{
    + fd = open("/dev/watchdog", O_WRONLY);
    +
    + if (fd == -1) {
    + fprintf(stderr, "Watchdog device not enabled.\n");
    + fflush(stderr);
    + exit(-1);
    + }
    +
    + if (argc > 1) {
    + if (!strncasecmp(argv[1], "-d", 2)) {
    + ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
    + fprintf(stderr, "Watchdog card disabled.\n");
    + fflush(stderr);
    + exit(0);
    + } else if (!strncasecmp(argv[1], "-e", 2)) {
    + ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
    + fprintf(stderr, "Watchdog card enabled.\n");
    + fflush(stderr);
    + exit(0);
    + } else {
    + fprintf(stderr, "-d to disable, -e to enable.\n");
    + fprintf(stderr, "run by itself to tick the card.\n");
    + fflush(stderr);
    + exit(0);
    + }
    + } else {
    + fprintf(stderr, "Watchdog Ticking Away!\n");
    + fflush(stderr);
    + }
    +
    + while(1) {
    + keep_alive();
    + sleep(1);
    + }
    +}
    --- linux-2617-rc4g9-docsrc-split.orig/Documentation/watchdog/watchdog.txt
    +++ linux-2617-rc4g9-docsrc-split/Documentation/watchdog/watchdog.txt
    @@ -65,28 +65,7 @@ The external event interfaces on the WDT
    Minor numbers are however allocated for it.


    -Example Watchdog Driver
    ------------------------
    -
    -#include <stdio.h>
    -#include <unistd.h>
    -#include <fcntl.h>
    -
    -int main(int argc, const char *argv[])
    -{
    - int fd=open("/dev/watchdog",O_WRONLY);
    - if(fd==-1)
    - {
    - perror("watchdog");
    - exit(1);
    - }
    - while(1)
    - {
    - write(fd,"\0",1);
    - fsync(fd);
    - sleep(10);
    - }
    -}
    +Example Watchdog Driver: see Documentation/watchdog/watchdog-simple.c


    Contact Information

    ---
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-05-22 05:58    [W:0.035 / U:0.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site