二、内核定时器

用到的数据结构

struct timer_list {

struct list_head entry;

unsigned long expires;//定时器时间设置一般为jiffies + n(0

void (*function)(unsigned long);//定时器处理函数

unsigned long data;//定时器私有数据

struct tvec_base *base;

#ifdef CONFIG_TIMER_STATS

void *start_site;

char start_comm[16];

int start_pid;

#endif

#ifdef CONFIG_LOCKDEP

struct lockdep_map lockdep_map;

#endif

};

用到的函数:

#define init_timer(timer) init_timer_key((timer), NULL, NULL)

void init_timer_key(struct timer_list *timer,

const char *name,

struct lock_class_key *key)

{

debug_init(timer);

__init_timer(timer, name, key);

}

初始化一个定时器

void add_timer(struct timer_list *timer)

{

BUG_ON(timer_pending(timer));

mod_timer(timer, timer->expires);

}

该函数用于添加一个定时器

代码如下:

#include

#include

#include

#include

strcut timer_list timed;

static void exec_timer(unsigned long arg)

{

printf("do someting else\n");

...

timed.expires = jiffies + 128;

add_timer(&timed);//再次添加一个定时器

}

static int xx_init()

{

...

init_timer(&time);

timed.function = exec_timer;

timed.expires = jiffies + 128;

timed.data = (unsigned long)xx_datap;

...

}

linux编程 定时器,Linux 定时器编程相关推荐

  1. Linux 环境编程 用户层定时器使用二 timer_create的使用

    用户层定时器有两种,一种是timerfd,另一种是timer_create,前者比较新,使用比较方便. Linux环境编程 用户层定时器使用一 timerfd的使用 https://blog.csdn ...

  2. Linux环境编程 用户层定时器使用一 timerfd的使用

    timerfd是linux提供的定时器机制,基于文件描述符,定时器精度最高可达纳秒级别,接口包括定时器创建.启动定时器.关闭定时器和删除定时器.下面介绍一下timerfd  API接口和一个结合epo ...

  3. linux c编程项目实例,Linux c编程实例_例子

    例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...

  4. Linux学习路线及网络编程经典书籍

    linux学习资源整理:https://zhuanlan.zhihu.com/p/22654634 Linux初学者(学习资料):https://zhuanlan.zhihu.com/p/217232 ...

  5. 【Linux驱动编程】Linux中断上半部和下半部

    前言   cpu在执行程序时,如果有外部中断触发时,如定时器中断.串行总线中断等,cpu停止当前任务从而转去响应中断处理.对于中断函数的处理,原则是尽快处理完事务并退出中断,这一点也比较好理解,尽快处 ...

  6. 杭州嵌入式linux培训机构,杭州嵌入式培训|嵌入式软件培训|嵌入式编程|杭州linux培训-和盈...

    技术名称 知识要点 学习目的 Linux操作系统 Linux介绍与安装 Linux基本命令操作 文件系统管理 用户管理 权限管理 网络配置 常用文本处理工具 搭建Samba服务器 搭建FTP服务器 搭 ...

  7. Linux时间管理与定时器

    学习资料:LINUX驱动程序开发实例教程2 时钟周期是指1s,而时钟频率是指1s内时钟脉冲的个数: 时钟滴答:1s内的时钟中断数 1.问:时间戳和节拍总值jiffies有什么区别? 答:时间戳是通过读 ...

  8. 深入Linux C/C++ Timer定时器的实现核心原理

    我曾以为像定时器这样基础的功能,操作系统会有一个完备的实现.当需要开启一个定时任务的时候,会有一个优雅的.如下形式的接口: typedef void (*callback)(void*); void ...

  9. Linux驱动-使用软定时器实现PWM输出

    Linux驱动-使用软定时器实现PWM输出 ​ 在没有pwm外设的情况下,可以使用定时器+GPIO的方法来实现pwm输出,实现pwm频率和占空比可控的功能.本文实现了一个Linux内核驱动,使用两个软 ...

  10. Linux用户进程高精度定时器去抖动

    Linux用户进程高精度定时器去抖动[新手自学APUE]. 通过实践 itimer定时器去抖动 总结的几点注意事项: 定时器精度要支持较高精度,定时器设置值要大于 [上确界](最大值)(每 两次 抖动 ...

最新文章

  1. 数据结构之二叉树的物理结构(存储结构)
  2. python json.dumps()函数输出json格式,使用ensure_ascii参数对中文输入的支持
  3. 如何在注解上拿到方法中的参数_想自己写框架?不会写Java注解可不行
  4. Android RadioButton 语言切换问题
  5. c语言位操作的高级应用
  6. 安装linux下显卡驱动
  7. 自己动手写操作系统之1:bochs初步使用
  8. excel对比两边数据去重
  9. 4种方法解决鼠标反应慢(迟钝)
  10. 利用QQ游戏破解QQ密码
  11. 163邮箱的登陆页面是什么样的有几种登陆方式?163邮箱手机版登陆
  12. 商汤科技Java面试题(含答案)
  13. android微信卡,微信无响应怎么弄 让别人微信卡死的小技巧(PC/安卓适用)
  14. oracle重建inventory,Oracle中Inventory目录作用以及如何重建此目录-Oracle
  15. 總結——關於2017 10 30測試的分析總結
  16. 如何用一句话激怒互联网人?
  17. C语言邮箱名字用什么存储,用c++定义一个描述学生通讯录的类数据成员包括姓名学校电话号码和邮箱...
  18. SQL Server求解最近多少销售记录的销售额占比总销售额的指定比例
  19. 中职计算机说课教法,2015教师资格证面试高中美术中职公共艺术美术篇说课稿 平面构成中的形象—活泼的点...
  20. matlab通过数据进行曲线拟合 导出公式

热门文章

  1. 矩形口径喇叭天线设计——参数设置
  2. android剪贴板数据来源,Android判断程序回到前台并获取剪贴板数据
  3. 【ShaderLab学习】AlphaTest AlphaBlend理解[1]
  4. 45个经典蓝屏案例一一破解
  5. 全国计算机二级ps考什么,计算机二级ps考试内容有哪些
  6. vscode终端显示中文字符乱码解决
  7. lisp绘制直齿圆柱齿轮_直齿圆柱齿轮的画法.ppt
  8. CNNIC:第35次中国互联网络发展状况统计报告
  9. 直通输出设备 android kodi,分享RK3188芯片XBMC实现音频HDMI源码输出的方法
  10. 修订的GRE分类词汇(截屏版)