mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-06 02:24:14 +08:00
selftests: watchdog: Add optional file argument
Some systems have multiple watchdog devices where the first device registered is assigned to the /dev/watchdog device file. In order to test other watchdog devices, add an optional file argument for selecting non-default watchdog devices for testing. Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com> Signed-off-by: George G. Davis <george_davis@mentor.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
88282297ff
commit
a4864a33f5
@ -19,7 +19,7 @@
|
||||
|
||||
int fd;
|
||||
const char v = 'V';
|
||||
static const char sopts[] = "bdehp:t:Tn:NL";
|
||||
static const char sopts[] = "bdehp:t:Tn:NLf:";
|
||||
static const struct option lopts[] = {
|
||||
{"bootstatus", no_argument, NULL, 'b'},
|
||||
{"disable", no_argument, NULL, 'd'},
|
||||
@ -31,6 +31,7 @@ static const struct option lopts[] = {
|
||||
{"pretimeout", required_argument, NULL, 'n'},
|
||||
{"getpretimeout", no_argument, NULL, 'N'},
|
||||
{"gettimeleft", no_argument, NULL, 'L'},
|
||||
{"file", required_argument, NULL, 'f'},
|
||||
{NULL, no_argument, NULL, 0x0}
|
||||
};
|
||||
|
||||
@ -69,6 +70,8 @@ static void term(int sig)
|
||||
static void usage(char *progname)
|
||||
{
|
||||
printf("Usage: %s [options]\n", progname);
|
||||
printf(" -f, --file Open watchdog device file\n");
|
||||
printf(" Default is /dev/watchdog\n");
|
||||
printf(" -b, --bootstatus Get last boot status (Watchdog/POR)\n");
|
||||
printf(" -d, --disable Turn off the watchdog timer\n");
|
||||
printf(" -e, --enable Turn on the watchdog timer\n");
|
||||
@ -92,14 +95,20 @@ int main(int argc, char *argv[])
|
||||
int ret;
|
||||
int c;
|
||||
int oneshot = 0;
|
||||
char *file = "/dev/watchdog";
|
||||
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
fd = open("/dev/watchdog", O_WRONLY);
|
||||
while ((c = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
|
||||
if (c == 'f')
|
||||
file = optarg;
|
||||
}
|
||||
|
||||
fd = open(file, O_WRONLY);
|
||||
|
||||
if (fd == -1) {
|
||||
if (errno == ENOENT)
|
||||
printf("Watchdog device not enabled.\n");
|
||||
printf("Watchdog device (%s) not found.\n", file);
|
||||
else if (errno == EACCES)
|
||||
printf("Run watchdog as root.\n");
|
||||
else
|
||||
@ -108,6 +117,8 @@ int main(int argc, char *argv[])
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
optind = 0;
|
||||
|
||||
while ((c = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'b':
|
||||
@ -190,6 +201,9 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
printf("WDIOC_GETTIMELEFT error '%s'\n", strerror(errno));
|
||||
break;
|
||||
case 'f':
|
||||
/* Handled above */
|
||||
break;
|
||||
|
||||
default:
|
||||
usage(argv[0]);
|
||||
|
Loading…
Reference in New Issue
Block a user