I am working with watchdog now
I wrote a small piece of code to understand the working of software watchdog
#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>
void Keep_Alive(int fd)
{
// int options = 0;
int pretimeout = 10;
int options = 0;
ioctl(fd, WDIOS_ENABLECARD, &options);
ioctl(fd, WDIOC_SETPRETIMEOUT, &pretimeout);
// ioctl(fd, WDIOC_SETOPTIONS, &options);
printf("Watchdog Alive \n");
}
void Kill(int fd)
{
write(fd, "V", 1);
printf("Watchdog killed\n");
}
int main()
{
int fd;
int timeout = 15;
fd = open("/dev/watchdog", O_WRONLY);
if(fd == -1)
{
fprintf(stderr, "Watchdog faild to open");
return ;
}
else
{
ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
printf("The timeout was set to %d seconds\n", timeout);
}
while(1)
{
Keep_Alive(fd);
sleep(10);
}
// Kill(fd);
}
Output :
root@imx6ulevk:/media# ./WatchDog
The timeout was set to 15 seconds
Watchdog Alive
watchdog pre-timeout:10, 5 Seconds remained
Watchdog Alive
U-Boot 2015.04-imx_v2015.04_3.14.38_6ul_ga+g5d63276 (May 16 2016 - 14:32:19)
I am kicking the watchdog for every 10 seconds still the board is rebooting after 15 secs.
What is the wrong i am doing.
i am using imx6ulevk board and 3.14.38 kernel.