返回顶部
首页 > 资讯 > 操作系统 >Linux设备驱动指的定时与延时如何理解
  • 758
分享到

Linux设备驱动指的定时与延时如何理解

2023-06-16 15:06:36 758人浏览 独家记忆
摘要

本篇文章为大家展示了linux设备驱动指的定时与延时如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux通过系统硬件定时器以规律的间隔(由HZ度量)产生定时器中断,每次中断使得一个内核计

本篇文章为大家展示了linux设备驱动指的定时与延时如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Linux通过系统硬件定时器以规律的间隔(由HZ度量)产生定时器中断,每次中断使得一个内核计数器的值jiffies累加,因此这个jiffies就记录了系统启动开始的时间流逝,然后内核据此实现软件定时器和延时。

Demo for jiffies and HZ

#include <linux/jiffies.h>  unsigned long j, stamp_1, stamp_half, stamp_n;  j = jiffies;  stamp_1 = j + HZ;  stamp_half = j + HZ/2;  stamp_n = j + n * HZ / 1000; 

内核定时器

硬件时钟中断处理程序会唤起 TIMER_SOFTIRQ 软中断,运行当前处理器上到期的所有内核定时器。

定时器定义/初始化

在Linux内核中,timer_list结构体的一个实例对应一个定时器:

    struct timer_list {        unsigned long expires;                   void (*function)(unsigned long);         unsigned long data;                      ...    };         struct timer_list my_timer;         void init_timer(struct timer_list * timer);        TIMER_INITIALIZER(_function, _expires, _data)         DEFINE_TIMER(_name, _function, _expires, _data)

定时器添加/移除

    void add_timer(struct timer_list * timer);         void del_timer(struct timer_list * timer);    void del_timer_sync(struct timer_list * timer);

定时时间修改

int mod_timer(struct timer_list *timer, unsigned long expires);

延时

短延时

void ndelay(unsigned long nsecs);  void udelay(unsigned long usecs);  void mdelay(unsigned long msecs);

内核在启动时,会运行一个延迟测试程序(delay loop calibration),计算出lpj(loops per  jiffy),根据lpj就实现了这几个函数,属忙等待。

长延时

  • 一个很直观的方法是比较当前的 jiffies 和目标 jiffies:

int time_after(unsigned long a, unsigned long b);   int time_before(unsigned long a, unsigned long b);   int time_after_eq(unsigned long a, unsigned long b);   int time_before_eq(unsigned long a, unsigned long b);
  • 睡着延时

void msleep(unsigned int millisecs);  unsigned long msleep_interruptible(unsigned int millisecs);  void ssleep(unsigned int seconds);

Tip: msleep()、 ssleep()不能被打断。

上述内容就是Linux设备驱动指的定时与延时如何理解,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网操作系统频道。

--结束END--

本文标题: Linux设备驱动指的定时与延时如何理解

本文链接: https://lsjlt.com/news/284094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux设备驱动指的定时与延时如何理解
    本篇文章为大家展示了Linux设备驱动指的定时与延时如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Linux通过系统硬件定时器以规律的间隔(由HZ度量)产生定时器中断,每次中断使得一个内核计...
    99+
    2023-06-16
  • Linux内核设备驱动之内核的时间管理笔记整理
    (1)内核中的时间概念 时间管理在linux内核中占有非常重要的作用。 相对于事件驱动而言,内核中有大量函数是基于时间驱动的。 有些函数是周期执行的,比如每10毫秒刷新一次屏幕; 有些函数是推后一定时间执行的,比...
    99+
    2022-06-04
    linux内核的时间管理 linux内核设备驱动
  • Win8如何更新指定驱动程序不想所有设备的驱动程序都更新
      经常点击更新,所有设备的驱动程序都一起更新了,但有些是没必要更新的,如何避免这种情况,只要更新指定的驱动程序就好?其实方法很简单,下面我们以Win8系统为例,详细的介绍Win8如何更新指定的驱动设备。 ...
    99+
    2022-06-04
    驱动程序 设备
  • 如何设置Windows到指定时间自动关机
      1. Windows 7在开始菜单底部的搜索栏输入“计划任务”,Windows 8/8.1可以通过Win+Q搜索“计划任务”,打开计划任务程序;   2. 通过&ldq...
    99+
    2023-06-03
    Windows 自动关机 时间
  • linux如何设置每天定时自动关机
    要在Linux系统上设置定时自动关机,可以使用crontab来完成。Crontab是一个用于在固定时间执行任务的工具。以下是步骤:1...
    99+
    2023-08-31
    linux
  • 教你如何深度解析Windows7的设备驱动管理原理
    1、Windows 7系统的设备驱动文件解读 在Windows7系统中包含了一个覆盖范围很广的身边驱动程序库。在该操作系统的基本安装中,这些驱动程序都会保存在驱动程序存储区中,它们位于%SystemRoot%\Syste...
    99+
    2023-05-25
    设备驱动 驱动管理 Windows7 设备 管理 驱动 深度
  • 如何设置 golang MySQL 驱动程序的 ping 超时时间为 2 秒?
    哈喽!今天心血来潮给大家带来了《如何设置 golang MySQL 驱动程序的 ping 超时时间为 2 秒?》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到...
    99+
    2024-04-05
  • 如何在Linux中进行硬件设备的识别和驱动管理
    在Linux中进行硬件设备的识别和驱动管理通常是通过以下几种方式来实现: 使用命令行工具: lspci:用于显示系统的PCI设...
    99+
    2024-04-02
  • 详解如何在golang镜像中设置指定时区
    我们在构建镜像的时候,经常会使用alphine作为基础镜像,或者就直接从scratch构建了;这样构建之后的镜像非常的小,传输也更加的快 但是这种镜像也会有一个问题,就是只能使用UT...
    99+
    2023-05-18
    golang镜像设置指定时区 golang设置指定时区 golang镜像 时区
  • 如何安装Linux系统时LSI RAID卡的驱动挂载
    这期内容当中小编将会给大家带来有关如何安装Linux系统时LSI RAID卡的驱动挂载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当我们使用新的ASA来安装Linux时,通常会遇到在安装系统界面读取不到...
    99+
    2023-06-28
  • Linux下如何实现MySQL数据库每天定时自动备份
    在云计算的浪潮下,企业多将业务部署在云上。对于数据库中的数据,直接使用云数据库自带的备份功能实现备份,操作简单。但是云数据库备份数据的存储空间有限制,一旦超出存储量便自动关闭备份功能,运维人员往往也会忽略这个问题,如果这时遭遇系统故障,面临...
    99+
    2016-01-07
    Linux下如何实现MySQL数据库每天定时自动备份
  • 总结:Linux系统上面定时备份mysql指定数据库的解决方案
    总结:Linux系统上面定时备份mysql指定数据库的解决方案 一·Mysql数据库本身就自带备份数据库命令1.mysql本身自带备份数据库为一个sql文件的命令,只需要在操作系统的终端里面执...
    99+
    2023-09-30
    linux 数据库 mysql unix 备份数据库
  • c#如何利用定时器自动备份数据库详解
    目录引用dll 静态类 定时器启动 备份代码 总结引用dll mysql.data.dll是MySQL数据库中一款必备的驱动文件,主要用于.net编程和MySQL数据库的连接,包含...
    99+
    2024-04-02
  • 如何使用vbs定时自动备份IIS的WWW日志
    小编给大家分享一下如何使用vbs定时自动备份IIS的WWW日志,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!dim IISCount,IISObject...
    99+
    2023-06-08
  • 如何理解Linux内核驱动的编码风格
    本篇文章给大家分享的是有关如何理解Linux内核驱动的编码风格,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代...
    99+
    2023-06-16
  • 如何从时延毛刺问题定位到Netty的性能统计设计
    小编给大家分享一下如何从时延毛刺问题定位到Netty的性能统计设计,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、背景:通常情况下,用户以黑盒的方式使用Nett...
    99+
    2023-06-05
  • 如何解决win10系统下设备管理器驱动显示的感叹号
    在win10系统中,我们可以通过设备管理器来判断硬件是否正常工作。如果设备管理器驱动显示感叹号,如何解决此类问题?一旦驱动显示感叹号或问号,则表明驱动器无法正确安装在计算机上。让我们现在分享一种解决win10系统下设备管理器驱动显示感叹号的...
    99+
    2023-07-10
  • 如何显示Linux系统的内置模块和设备驱动列表
    这篇文章主要讲解了“如何显示Linux系统的内置模块和设备驱动列表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何显示Linux系统的内置模块和设备驱动列表”吧!提问:我想要知道Linux...
    99+
    2023-06-12
  • 如何实现可以设定的定时关机的批处理
    这篇文章主要为大家展示了“如何实现可以设定的定时关机的批处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现可以设定的定时关机的批处理”这篇文章吧。批处理定时关机.bat 代码如下:@ec...
    99+
    2023-06-08
  • 如何使用Linux中用于配合管理定时任务的atrm与batch命令
    本篇内容介绍了“如何使用Linux中用于配合管理定时任务的atrm与batch命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!atrm删除...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作