RK3399 watch dog

简介: RK3399 watch dog

内核选中红框部分,确保有/dev/watchdog

include <errno.h>

include <fcntl.h>

include <stdlib.h>

include <string.h>

include <unistd.h>

include "stdio.h"

include <unistd.h> / System V /

include <sys/ioctl.h> / BSD and Linux /

include <stropts.h> / XSI STREAMS /

include <linux/watchdog.h>

define DEV_NAME "/dev/watchdog"

int fd;

/*

  • @brief 初始化看门狗
  • @param interval 喂狗时间
  • @param margin 喂狗间隔保留时间
  • @return int
  • @create at 2019.09.04 by Eric.Xi

*/
int watch_dog_init(int interval,int margin)
{

 printf("started (interval %d, margin %d)!\n", interval, margin);

fd = open(DEV_NAME, O_RDWR|O_CLOEXEC);
if (fd == -1) {
    printf("Failed to open %s: %s\n", DEV_NAME, strerror(errno));
    return 1;
}

int timeout = interval + margin;
int ret = ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
if (ret) {
    printf("Failed to set timeout to %d: %s\n", timeout, strerror(errno));
    ret = ioctl(fd, WDIOC_GETTIMEOUT, &timeout);
    if (ret) {
        printf("Failed to get timeout: %s\n", strerror(errno));
    } else {
        if (timeout > margin) {
            interval = timeout - margin;
        } else {
            interval = 1;
        }
        printf("Adjusted interval to timeout returned by driver:"
                " timeout %d, interval %d, margin %d\n",
                timeout, interval, margin);
    }
}
return 0;

}

/*

  • @brief 喂看门狗
  • @param interval 喂狗时间
  • @param fd 看门狗句柄
  • @return int
  • @create at 2019.09.04 by Eric.Xi

*/
int watch_dog_feed(int fd, int interval)
{

write(fd, "", 1);
sleep(interval);
return 0;

}

/*

  • @brief 看门狗使用demo
  • @return int
  • @create at 2019.09.04 by Eric.Xi

*/
int main(int argc, char **argv)
{

int interval = 1;
int margin =2;
int ret;
ret = watch_dog_init(interval,margin);
if(ret<0){
    return -1;
}


    while (true) {
        watch_dog_feed(fd ,interval);
     printf("------feed--------\n");
    
    }

}

相关文章
|
Python
apply函数的用法
apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
173 0
|
8月前
|
资源调度 前端开发
Error_ watch path ENOSPC
Error_ watch path ENOSPC
50 0
|
前端开发 JavaScript
玩转ES6(四)Set、Map、Class类和decorator 装饰器
玩转ES6(四)Set、Map、Class类和decorator 装饰器
165 0
|
Arthas 缓存 监控
Watch 命令的参数介绍 | 学习笔记
快速学习 Watch 命令的参数介绍
Watch 命令的参数介绍 | 学习笔记
|
Java Scala 开发者
apply 方法的使用|学习笔记
快速学习 apply 方法的使用。
163 0
|
JavaScript
一步一步实现call和apply方法,超简单!
前言 this 指向问题一直是一个老生常谈的问题了!我们对它可以说是又爱又恨,因为 this 指向常常没有按照我们的想法去指向谁,导致程序无缘出现许多 bug。所以我们常常直接强制改变程序中的 this 指向,我们常用的方法有 bind、apply 和 call,bind 与其它两个稍许不同,所以我们本篇文章专门讲解 call 和 apply 方法,并且手动模拟实现它们。
181 0
一步一步实现call和apply方法,超简单!
computed和watch的用法和区别
computed和watch的用法和区别
|
Unix Linux
RK3399 watch dog
RK3399 watch dog

热门文章

最新文章