📄 w83627hf_test.c
字号:
#include <stdio.h>#include <sys/fcntl.h>#include <sys/ioctl.h>#include <sys/signal.h>#include <unistd.h>#include "w83627hf_wdt.h"#define WDT_DEVICE "/dev/watchdog"#define WATCHDOG_TIMEOUT 30 /* 根据传入的参数处理各种ioctl操作 */void wdt_ioctl(int fd, unsigned int cmd, unsigned long arg){ struct watchdog_info *argp = (struct watchdog_info *)arg; int *p = (int *)arg; int ret; switch (cmd) { case WDIOC_GETSUPPORT:/* 获取wdt_all_info */ ioctl(fd, cmd, argp); if(argp->options & WDIOF_KEEPALIVEPING) printf("WDIOF_KEEPALIVEPING\n"); if(argp->options & WDIOF_SETTIMEOUT) printf("WDIOF_SETTIMEOUT\n"); if(argp->options & WDIOF_MAGICCLOSE) printf("WDIOF_MAGICCLOSE\n"); printf("firmware_version:%d\n", argp->firmware_version); printf("identity:%s\n", argp->identity); break; case WDIOC_GETSTATUS: ioctl(fd, cmd, p); printf("status:%d\n", *p); break; case WDIOC_SETTIMEOUT:/* 设置超时值 */ ret = ioctl(fd, cmd, p); if(ret == 0) printf("settimeout success!\n"); else printf("settimeout failed!\n"); break; case WDIOC_SETOPTIONS:/* 设置看门狗状态,开启/禁用 */ ret = ioctl(fd, cmd, p); printf("wdt enable ret is:%d\n", ret); break; case WDIOC_GETTIMEOUT:/* 获取超时值 */ ret = ioctl(fd, cmd, p); if(ret == 0) printf("timeout: %d\n", *p); else printf("gettimeout failed!\n"); break; default: return; }}int main(int argc,char *argv[]){ int wdt; struct watchdog_info info; unsigned long arg=0; wdt = open(WDT_DEVICE, O_RDWR);/* 打开设备 */ if(wdt < 0) { printf("I can not open watchdog\n"); return 1; } //ioctl wdt_ioctl(wdt, WDIOC_GETSUPPORT, (unsigned long)&info);/* 获取看门狗信息 */ wdt_ioctl(wdt, WDIOC_GETSTATUS, (unsigned long)&arg); wdt_ioctl(wdt, WDIOC_GETTIMEOUT, (unsigned long)&arg);/* 获取看门狗超时值 */ //enable watchdog arg = WDIOS_ENABLECARD; wdt_ioctl(wdt, WDIOC_SETOPTIONS, (unsigned long)&arg);/* 开启看门狗 */ //set new timeout arg = WATCHDOG_TIMEOUT; wdt_ioctl(wdt, WDIOC_SETTIMEOUT, (unsigned long)&arg);/* 设置看门狗超时值为WATCHDOG_TIMEOUT */ wdt_ioctl(wdt, WDIOC_GETTIMEOUT, (unsigned long)&arg);/* 获取看门狗超时值 */ while (1)//fee watchdog { arg = WATCHDOG_TIMEOUT; write(wdt, &arg, sizeof(arg));/* 喂狗 */ sleep(1); } close(wdt); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -