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设备驱动编程之定时器相关推荐

  1. linux驱动开发篇(三)—— 总线设备驱动模型

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  2. Linux kernel SPI源码分析之SPI设备驱动源码分析(linux kernel 5.18)

    SPI基础支持此处不再赘述,直接分析linux中的SPI驱动源码. 1.SPI设备驱动架构图 2.源码分析 本次分析基于kernel5.18,linux/drivers/spi/spidev.c 设备 ...

  3. linux内核源码实战_3.2理解设备驱动和文件系统

    linux内核源码实战_3.2理解设备驱动和文件系统 linux内核源码实战_理解设备驱动和文件系统 理解设备驱动和文件系统 理解设备驱动和文件系统详解 7-文件系统-proc文件系统实现 总结 li ...

  4. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

    以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...

  5. linux平台驱动运行空间,UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍...

    UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍(由搜集整理) UIO(Userspace I/O)是运行在用户空间的I/O技术.Linux系统中一般的驱动设备都是 ...

  6. 运行linux在de1soc,在DE1-SOC上运行Linux

    1,设定串口终端 安装驱动 :使用mini-USB线将计算机与DE1-SoC的UART转USB接口.drivers\USB2UART_driver文件夹内放置有驱动程序 设定串口终端规格 : 设定串口 ...

  7. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

  8. Linux查看网卡是rdma,Chelsio RDMA Block设备驱动测试

    RDMA Block 设备驱动介绍 我们现在测试使用的 Chelsio T4 及 T5 系列万兆以太网卡支持 iWARP RDMA 功能,查阅文档之后发现此系列的万兆网卡除了支持常用的基于 IP 协议 ...

  9. windows10上运行linux,在Windows 10上原生运行Linux

    微软已经推出了适用于Linux的WSL子系统,它使用户可以直接从Windows 10运行自己喜欢的Linux发行版,而无需双启动或使用虚拟机. 适用于Linux的Windows子系统的局限性 尽管这是 ...

  10. linux 命令 抛后台,在后台运行Linux命令的方法

    通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束.这被称为在前台运行命令,或者前台进程.当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入 ...

最新文章

  1. Linux系统编程——进程基础知识
  2. 字节跳动《算法中文手册》完整版 PDF 开放下载!
  3. 准确率(Accuracy) | 查准率(Precision) | 查全率(Recall)
  4. 打靶(递归算法) | 八皇后(回溯算法)
  5. 用js数组实现最原始的图片轮播实现
  6. 【Funpack】蓝牙技术 QA
  7. Filebeat 轻量级日志采集器
  8. 探索分布式服务框架Dubbo开篇:牛逼哄哄的RPC
  9. LTE(4G) - NR(5G) RSRP和SINR RSRQ RSSI LTE信号质量
  10. 为什么工控行业生意越来越难做了?
  11. 广东工业大学acm校赛总结(基础差的人的自我觉悟)
  12. selenium+requests实现自动连接校园网并验证!
  13. The first record --两次面试
  14. 中小型互联网企业研发管理体系
  15. zigbee CC2530 系列教程 0 课程介绍
  16. 用matlab计算线是热率,运用MATLAB计算散热器的散热量
  17. dev sda2 linux lvm,记录linux LVM 扩容硬盘空间的记录
  18. 超实用的公众号运营经验总结分享
  19. cisco IP电话 qos
  20. UE4多人VR随笔 —— 关于playerController 不得不说的故事

热门文章

  1. IntelliJ IDEA引入项目之后不显示 解决办法
  2. axios传参 后台接收为空
  3. 我对未来技术趋势的一些看法
  4. Confluence 6 配置边栏
  5. mycat启动服务,后台日志报错Bit Server VM warning: ignoring option MaxPermSize
  6. 查看表的记录最多的sqll
  7. time datetime
  8. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platf...
  9. Linux-软件包管理-rpm命令管理-安装-卸载
  10. 针对binlog MIXED格式对表的增删改统计分析