linux ns级定时器_linux时间---延迟和定时

本文介绍了Linux内核中的时间概念,包括tick、jiffies、绝对时间和延迟方法。讲解了不同类型的延迟,如短时间延迟(ndelay、udelay、mdelay)和长时间延迟(基于睡眠和等待队列的延迟)。还详细阐述了定时器的工作原理,包括如何启动、设置和取消定时器,并强调了定时器函数在中断上下文中的运行限制。
摘要由CSDN通过智能技术生成

内核时间:

1:tick:

1 tick = 1/HZ秒

HZ是在make menuconfig里配置的,.config中的CONFIG_HZ,

6410设置的是200,其他取值一般为:100,200,250,300,1000,范围是100-1000

2:相对时间jiffies

jiffies记录着从开机到当前所经过的tick时间,在硬件定时器中断处理函数中对jiffies进行++

jiffies是 unsigned long 类型的,

所以当HZ  = 1000的时候,49.7天的时候就会发生溢出,为了解决这个问题,可以使用jiffies64

u64 j64;

j64 = get_jiffies_64();

jiffes开机的时候等于-300 * HZ就相当于开机五分钟要进位一次,之后就是49.7天进位一次

内核中很多延迟和定时都是用jiffies进行判定

3:绝对时间,从1970年1月1日0时0分0秒开始到现在的时间。

可以存放绝对时间的值 中的timeval和timespec。

#include struct timeval val;最小单位微妙

struct timespec val;最小单位纳秒

do_gettimeofday(&val);printf("s = %ld us = %ld \n",val.tv_sec,val.tv_usec);

getnstimeofday(&val);print

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值