WATCHDOG驱动框架
来源:互联网 发布:pp助手 mac 备份app 编辑:程序博客网 时间:2024/05/20 10:14
看门狗的框架涉及到drivers/watchdog/watchdog_dev.c、watchdog_dev.h、watchdog_core.c,include/linux/watchdog.h中
定义的结构体:
struct watchdog_device {const struct watchdog_info *info;const struct watchdog_ops *ops;unsigned int bootstatus;unsigned int timeout;unsigned int min_timeout;unsigned int max_timeout;void *driver_data;unsigned long status;/* Bit numbers for status flags */#define WDOG_ACTIVE0/* Is the watchdog running/active */#define WDOG_DEV_OPEN1/* Opened via /dev/watchdog ? */#define WDOG_ALLOW_RELEASE2/* Did we receive the magic char ? */#define WDOG_NO_WAY_OUT3/* Is 'nowayout' feature set ? */};struct watchdog_ops {struct module *owner;/* mandatory operations */int (*start)(struct watchdog_device *);int (*stop)(struct watchdog_device *);/* optional operations */int (*ping)(struct watchdog_device *);unsigned int (*status)(struct watchdog_device *);int (*set_timeout)(struct watchdog_device *, unsigned int);unsigned int (*get_timeleft)(struct watchdog_device *);long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long);};struct watchdog_info {__u32 options;/* Options the card/driver supports */__u32 firmware_version;/* Firmware version of the card */__u8 identity[32];/* Identity of the board */};watchdog.h涉及到的API:
设置watchdog为nowayout
void watchdog_set_nowayout(struct watchdog_device *wdd, bool nowayout)
设置私有结构体
void watchdog_set_drvdata(struct watchdog_device *wdd, void *data)
获取私有结构体
void *watchdog_get_drvdata(struct watchdog_device *wdd)
注册watchdog_device结构体
int watchdog_register_device(struct watchdog_device *)
卸载watchdog_device结构体
void watchdog_unregister_device(struct watchdog_device *)
watchdog_core.c涉及到的API实现:
int watchdog_register_device(struct watchdog_device *wdd)
void watchdog_unregister_device(struct watchdog_device *wdd)
watchdog_dev.c涉及到的API:
static int watchdog_ping(struct watchdog_device *wddev)
static int watchdog_start(struct watchdog_device *wddev)
static int watchdog_stop(struct watchdog_device *wddev)
static ssize_t watchdog_write(struct file *file, const char __user *data,size_t len, loff_t *ppos)
static long watchdog_ioctl(struct file *file, unsigned int cmd,unsigned long arg)
static int watchdog_open(struct inode *inode, struct file *file)
static int watchdog_release(struct inode *inode, struct file *file)
int watchdog_dev_register(struct watchdog_device *watchdog)//被watchdog_register_device调用
int watchdog_dev_unregister(struct watchdog_device *watchdog)//被watchdog_unregister_device调用
- WATCHDOG驱动框架
- WatchDog Timer驱动
- Watchdog驱动测试程序
- s3c2440 watchdog驱动
- MT7620_看门狗(Watchdog)驱动
- sbsa watchdog的驱动分析
- Linux下的Watchdog驱动
- Linux驱动学习之:WDT(watchdog)驱动
- watchdog
- WatchDog
- Watchdog
- watchdog
- WatchDog
- watchdog
- Watchdog
- Watchdog
- Watchdog
- 看门狗(Watchdog)驱动开发实例讲解
- 网络编程实验2-循环服务器设计与select多路转换
- java之socket的OOBInline和UrgentData和发送心跳包研究
- 指针数组与数组指针
- 7. Nginx 预定义变量
- 记录一些学习迷茫时要经常看看的网址
- WATCHDOG驱动框架
- 找到最长子串位置
- Far Manager的简单使用
- POI操作Excel读取与导出
- smart
- leetcode 91. Decode Ways
- 循环链表和约瑟夫环
- B-Tree数据存储
- C语言中的运算符