linux驱动怎么判断定时器正在运行,Linux设备驱动编程之定时器
Linux设备驱动编程之定时器
2006-10-26 13:34
作者:
出处:Linux
责任编辑:方舟
相关专题:
Linux设备驱动程序开发入门
Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用之:
struct timer_list {
struct list_head list;
unsigned long expires; //定时器到期时间
unsigned long data; //作为参数被传入定时器处理函数
void (*function)(unsigned long);
};
下面是关于timer的API函数:
增加定时器
void add_timer(struct timer_list * timer);
删除定时器
int del_timer(struct timer_list * timer);
修改定时器的expire
int mod_timer(struct timer_list *timer, unsigned long expires);
使用定时器的一般流程为:
(1)timer、编写function;
(2)为timer的expires、data、function赋值;
(3)调用add_timer将timer加入列表;
(4)在定时器到期时,function被执行;
(5)在程序中涉及timer控制的地方适当地调用del_timer、mod_timer删除timer或修改timer的expires。
我们可以参考drivers\char\keyboard.c中键盘的驱动中关于timer的部分:
…
#include
…
static struct timer_list key_autorepeat_timer =
{
function: key_callback
};
static void
kbd_processkeycode(unsigned char keycode, char up_flag, int autorepeat)
{
char raw_mode = (kbd->kbdmode == VC_RAW);
if (up_flag) {
rep = 0;
if(!test_and_clear_bit(keycode, key_down))
up_flag = kbd_unexpected_up(keycode);
} else {
rep = test_and_set_bit(keycode, key_down);
/* If the keyboard autorepeated for us, ignore it.
* We do our own autorepeat processing.
*/
if (rep && !autorepeat)
return;
}
if (kbd_repeatkeycode == keycode || !up_flag || raw_mode) {
kbd_repeatkeycode = -1;
del_timer(&key_autorepeat_timer);
}
…
/*
* Calculate the next time when we have to do some autorepeat
* processing. Note that we do not do autorepeat processing
* while in raw mode but we do do autorepeat processing in
* medium raw mode.
linux驱动怎么判断定时器正在运行,Linux设备驱动编程之定时器相关推荐
- linux驱动开发篇(三)—— 总线设备驱动模型
linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...
- Linux kernel SPI源码分析之SPI设备驱动源码分析(linux kernel 5.18)
SPI基础支持此处不再赘述,直接分析linux中的SPI驱动源码. 1.SPI设备驱动架构图 2.源码分析 本次分析基于kernel5.18,linux/drivers/spi/spidev.c 设备 ...
- linux内核源码实战_3.2理解设备驱动和文件系统
linux内核源码实战_3.2理解设备驱动和文件系统 linux内核源码实战_理解设备驱动和文件系统 理解设备驱动和文件系统 理解设备驱动和文件系统详解 7-文件系统-proc文件系统实现 总结 li ...
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...
- linux平台驱动运行空间,UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍...
UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍(由搜集整理) UIO(Userspace I/O)是运行在用户空间的I/O技术.Linux系统中一般的驱动设备都是 ...
- 运行linux在de1soc,在DE1-SOC上运行Linux
1,设定串口终端 安装驱动 :使用mini-USB线将计算机与DE1-SoC的UART转USB接口.drivers\USB2UART_driver文件夹内放置有驱动程序 设定串口终端规格 : 设定串口 ...
- platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架
platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...
- Linux查看网卡是rdma,Chelsio RDMA Block设备驱动测试
RDMA Block 设备驱动介绍 我们现在测试使用的 Chelsio T4 及 T5 系列万兆以太网卡支持 iWARP RDMA 功能,查阅文档之后发现此系列的万兆网卡除了支持常用的基于 IP 协议 ...
- windows10上运行linux,在Windows 10上原生运行Linux
微软已经推出了适用于Linux的WSL子系统,它使用户可以直接从Windows 10运行自己喜欢的Linux发行版,而无需双启动或使用虚拟机. 适用于Linux的Windows子系统的局限性 尽管这是 ...
- linux 命令 抛后台,在后台运行Linux命令的方法
通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束.这被称为在前台运行命令,或者前台进程.当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入 ...
最新文章
- Linux系统编程——进程基础知识
- 字节跳动《算法中文手册》完整版 PDF 开放下载!
- 准确率(Accuracy) | 查准率(Precision) | 查全率(Recall)
- 打靶(递归算法) | 八皇后(回溯算法)
- 用js数组实现最原始的图片轮播实现
- 【Funpack】蓝牙技术 QA
- Filebeat 轻量级日志采集器
- 探索分布式服务框架Dubbo开篇:牛逼哄哄的RPC
- LTE(4G) - NR(5G) RSRP和SINR RSRQ RSSI LTE信号质量
- 为什么工控行业生意越来越难做了?
- 广东工业大学acm校赛总结(基础差的人的自我觉悟)
- selenium+requests实现自动连接校园网并验证!
- The first record --两次面试
- 中小型互联网企业研发管理体系
- zigbee CC2530 系列教程 0 课程介绍
- 用matlab计算线是热率,运用MATLAB计算散热器的散热量
- dev sda2 linux lvm,记录linux LVM 扩容硬盘空间的记录
- 超实用的公众号运营经验总结分享
- cisco IP电话 qos
- UE4多人VR随笔 —— 关于playerController 不得不说的故事
热门文章
- IntelliJ IDEA引入项目之后不显示 解决办法
- axios传参 后台接收为空
- 我对未来技术趋势的一些看法
- Confluence 6 配置边栏
- mycat启动服务,后台日志报错Bit Server VM warning: ignoring option MaxPermSize
- 查看表的记录最多的sqll
- time datetime
- [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platf...
- Linux-软件包管理-rpm命令管理-安装-卸载
- 针对binlog MIXED格式对表的增删改统计分析