延时和定时器

1、jiffies

HZ=100,jiffies=1 means 10ms。

2,延时

unsigned long timeout = jiffies + (3*HZ);

while (hwgroup->busy) {

if (time_after(jiffies, timeout)) {

return -EBUSY;

}

}

unsigned long timeout = HZ;

schedule_timeout(timeout); /* Allow other parts of the kernel to run */

短延时:mdelay, udelay, ndelay

3,时间

clock_settime, clock_gettime

do_gettimeofday

time()

localtime()

mktime()

gettimeofday()

3,定时器

#include <linux/timer.h>

struct timer_list my_timer;

init_timer(&my_timer); /* Also see setup_timer() */

my_timer.expire = jiffies + n*HZ; /* n is the timeout in number of seconds */

my_timer.function = timer_func; /* Function to execute after n seconds */

my_timer.data = func_parameter; /* Parameter to be passed to timer_func */

add_timer(&my_timer); /* Start the timer */

其他函数:mod_timer, del_timer

用户态:setitimer,getitimer

4、高精度定时器

void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode);

timer.function = hr_callback;

int hrtimer_start(struct hrtimer *timer, ktime_t tim,

const enum hrtimer_mode mode);

int hrtimer_cancel(struct hrtimer *timer);

时间: 2024-10-06 00:17:17

延时和定时器的相关文章

linux应用程序中的延时和定时器

笔记: 在linux应用程序中延时有sleep().msleep()和usleep()函数之类的延时,也有如下形式的延时: struct timeval delay; delay.tv_sec = sleepSecond; delay.tv_usec = 0; select( 0, NULL, NULL, NULL, &delay ); 但是基本上都是基于进程休眠的,好像没有循环等待的延时,有待证实,目前没发现. 考虑到一个问题,如果定时发送信号,执行相应一个信号处理函数时,该函数还么有执行完成

Java并发程序设计(8)线程池之用于定时器

1.1. 线程池用于定时器 线程池用于定时器调度时,只能指定某个时间段后执行任务,而不能指定具体的时间点. 1.2. 只运行一次的定时器 5秒钟后运行指定任务的定时器,定时器任务只会被执行1次. ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); executorService.schedule( new Runnable(){ @Override public void run() {

Unity3D项目实战笔记(5):延时功能的几种实现

我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在Unity3D中,新建的脚本会默认继承MonoBehaviour,其中Update函数会被引擎自动调度,如在我的电脑上,Update函数被调用的周期为0.012s. 那么Unity3D中,仅有通过Update函数来实现延时功能吗?  还有无其他的实现呢? 怎么才能让一个界面只显示1秒之后 然后再执行

基于BISS0001构成的热释电红外延时照明控制器电路图

BISS0001是采用CMOS数模混合结构.具有DIP-16和SOIC-16两种封装的热释电红外传感信号处理集成电路.芯片内部集成了电压比较器.状态控制器.延时电路定时器.封锁时间定时器以及参考电压源等电路,常用于防盗报警器.自动门等各种自动开关.利用BISS0001构成的热释电红外延时照明控制器典型电路如图所示.该控制器能实现有人进入灯亮,人走灯灭控制.常用于浴室.储藏室.梳妆台镜前灯等自动控制. 传输文件进行 [薄膜开关] 打样 利用BISS0001构成的热释电红外延时照明控制器电路 电路结

LINUX使用一个定时器实现设置任意数量定时器

本例子参考 Don Libes的Title: Implementing Software Timers例子改写 为什么需要这个功能,因为大多数计算机软件时钟系统通常只能有一个时钟触发一次中断.当运行多个任务时,我们会想要多个定时器 的时钟跟踪并发这样可以生成正确的时间重叠,操作系统这样做. 本例子是为了实现使用Linux下的一个定时器,实现任一数量的定时器功能. 首先我们需要一些数据类型用来描述时钟数据结构 #include <stdio.h> #include<time.h> #

TCP的定时器

TCP为每条连接建立七个定时器,依次为:连接建立定时器.重传定时器.延时ACK定时器.持续定时器.保活定时器.FIN_WAIT_2定时器和TIME_WAIT定时器.实际上,为了提高效率,内核中只使用了四个定时器来完成七个定时器的功能. TCP定时器的实现涉及以下文件: net/ipv4/tcp_timer.c TCP的定时器 net/ipv4/inet_connection_sock.c 基于连接的传输控制块实现 net/ipv4/tcp_output.c TCP的输出 net/ipv4/tcp

毕业回馈-89c51之定时器/计数器(Timer/Count)

今天分享的是89c51系列单片机的内部资源定时器/计数器,在所有的嵌入式系统中都包含这两个内部功能. 首先先了解几个定时器/计数器相关的概念: ?时钟周期:时钟周期 T 是时序中最小的时间单位,具体计算的方法就是1/时钟源频率,(一般单片机采用的是11.0592mHz) ?机器周期:我们的单片机完成一个操作的最短时间.标准51单片机,一个机器周期是 12 个时钟周期,也就是 12/11059200 秒. ?定时器:当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加1,计数

UCOSiii软件定时器

1 简介 定时器其实就是一个递减计数器,当计数器递减到0的时候就会触发一个动作,这个动作就是回调函数,当定时器计时完成时就会自动的调用这个回调函数.因此我们可以使用这个回调函数来完成一些功能设计.比如,定时10秒后打开某个外设等等,在回调函数中应避免任何可以阻塞或者删除定时任务的函数. 如果要使用该软件定时器的话需要将宏OS_CFG_TMR_DEL_EN定义为1. 软件定时器的分辨率由我们定义的系统节拍频率OS_CFG_TICK_RATE_HZ决定,例如定义为200,系统时钟周期就是5ms,定时

JS-BOM

# BOM ## Browser Object Model - 浏览器对象模型 - BOM对象都是作为window对象的属性保存的 - window 代表浏览器窗口 - navigator 代表浏览器的信息.可用来识别浏览器 - history 浏览器的历史记录 - location 代表浏览器的地址栏信息 - screen 用户的显示器信息 #### window - window.innerHeight - 浏览器窗口的内部高度(包括滚动条) - window.innerWidth - 浏览