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");
    
    }

}

相关文章
|
4月前
|
JavaScript 前端开发 开发者
call 方法和 apply 方法的区别是什么?
【10月更文挑战第26天】`call` 方法和 `apply` 方法的主要区别在于参数传递方式和使用场景。开发者可以根据具体的函数参数情况和代码的可读性、简洁性要求来选择使用 `call` 方法还是 `apply` 方法,以实现更高效、更易读的JavaScript代码。
56 2
|
Python
apply函数的用法
apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
199 0
|
缓存
computed 和 watch的区别
computed 和 watch的区别
129 0
|
Arthas 缓存 监控
Watch 命令的参数介绍 | 学习笔记
快速学习 Watch 命令的参数介绍
Watch 命令的参数介绍 | 学习笔记
|
缓存
computed和watch的区别
computed和watch的区别
160 0
|
JavaScript
一步一步实现call和apply方法,超简单!
前言 this 指向问题一直是一个老生常谈的问题了!我们对它可以说是又爱又恨,因为 this 指向常常没有按照我们的想法去指向谁,导致程序无缘出现许多 bug。所以我们常常直接强制改变程序中的 this 指向,我们常用的方法有 bind、apply 和 call,bind 与其它两个稍许不同,所以我们本篇文章专门讲解 call 和 apply 方法,并且手动模拟实现它们。
188 0
一步一步实现call和apply方法,超简单!
computed和watch的用法和区别
computed和watch的用法和区别
|
Unix Linux
RK3399 watch dog
RK3399 watch dog
|
JavaScript
call,apply,方法的使用
//apply和call的使用方法 /* * apply的使用语法 * 函数名字.apply(对象,[参数1,参数2,...]); * 方法名字.apply(对象,[参数1,参数2,.
1015 0