读书笔记:LLD3(4)内核定时器

内核定时器可用来在未来的某个时间点(基于时钟滴答)调度执行的某个函数。

当定时器运行时,调度定时器的进程可能正在休眠或在其他处理器上执行,或干脆已经退出。

定时器运行在软中断的上下文中,也是一种原子上下文。

进程上下文之外(原子上下文)必须遵守的规则:

不允许访问用户空间。因为没有进程上下文,无法将任何特定进程与用户空间关联起来。

current指针在原子模式下没有任何意义,也是不可用的。因为相关代码和被中断的进程没有任何关联。

不能执行休眠或调度。原子代码不可以调用schedule或者wait_event,也不能调用任何可能引起休眠的函数。

内核代码可以调用in_interrpt()来判断自己是否处于中断上下文。

定时器API:

#include <linux/timer.h>

struct timer_list{

          /* ...*/

          unsigned long expires;

          void  (*function)(unsigned long);

          unsigned long data;

};

void init_timer(struct timer_list *timer);

struct timer_list  TIMER_INITIALIZE(_function, _expires, _data);

void add_timer(struct timer_list * timer);

int  del_timer(struct timer_list *timer);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,329评论 0 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 1 临界区 1.1简介 在早期计算机系统中,只有一个任务进程在执行,并不存在资源的共享与竞争。随着技术和需求的飞速...
    Fly晴天里Fly阅读 9,193评论 2 13
  • 最近,北京四中一篇初二女生的作文忽然网络爆火,连高晓松都大加点赞,尤其是其中的那句“愿你走出半生,归来仍是少年”,...
    静扯淡阅读 536评论 0 0
  • 理智中心也就是我们的左脑,总是最为后知后觉。我们生于一种崇尚权力和金钱的文化中,这种文化崇尚物质而非智慧,理智是至...
    身体棒棒阅读 519评论 0 5

友情链接更多精彩内容