hrtimer_init函数就是用来初始化高精度定时器的函数。 在Linux内核中,不同类型的定时器有不同的实现方式和精度。hrtimer是Linux内核中实现高精度定时器的一种方式,它提供了更精确的时间控制和更灵活的定时器管理能力。hrtimer_init函数就是用来初始化这种高精度定时器的函数。 hrtimer_init函数的主要作用就是初始化并...
hrtimer_cancel:取消定时器。 使用示例 单次定时 加载驱动一秒后输出“hrtimer handler”: #include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/ktime.h>#include <linux/hrtimer.h>static struct hrtimer timer;static enum hrtimer_restart timer_handler(struct hrtimer ...
*/ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); hrtimer->function = watchdog_timer_fn; hrtimer_start(hrtimer, ns_to_ktime(sample_period), HRTIMER_MODE_REL_PINNED_HARD); ... } static void watchdog_disable(unsigned int cpu) { struct hrtimer *hrtimer = this_cpu_ptr(...
void __init hrtimers_init(void) { /* 初始化属于当前CPU的hrtimer_cpu_base结构体 */ hrtimers_prepare_cpu(smp_processor_id()); /* 打开HRTIMER_SOFTIRQ软中断 */ open_softirq(HRTIMER_SOFTIRQ, hrtimer_run_softirq); } 该函数主要功能就是初始化属于当前 CPU 的 hrtimer_cpu_base 结构体,然后打开HR...
hrtimer的中断处理函数是:kernel/watchdog.c/watchdog_timer_fn()。 中断处理函数主要做了以下事情: 对变量hrtimer_interrupts加加操作,该变量同时供hard lockup detector用于判断CPU是否响应中断。 唤醒[watchdog/x]内核线程喂狗(执行soft_lockup_hrtimer_cnt=hrtimer_interrupts赋值即将hrtimer_interrupts更新到soft_loc...
void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode); which_clock可以是CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_BOOTTIME中的一种,mode则可以是相对时间HRTIMER_MODE_REL,也可以是绝对时间HRTIMER_MODE_ABS。设定回调函数: ...
mode是时间的模式,可以是HRTIMER_MODE_ABS, 表示绝对时间, 也可以是HRTIMER_MODE_REL,表 示相对时间。hrtimer_start:启动定时器。tim是设定的到期时间,mode和hrtimer_init中的mode参数含义相同。hrtimer_forward_now: 修改到期时间为从现在开始之后的interval时间。hrtimer_cancel:取消定时器。
1. struct hrtimer { 2. struct timerqueue_node node; 3. ktime_t _softexpires; 4. enum hrtimer_restart (*function)(struct hrtimer *); 5. struct hrtimer_clock_base *base; 6. long state; 7. ... 8. }; 1. 2. 3. 4. 5.
hrtimer_init(&timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); HRTIMER_MODE_REL表示定时器是基于相对时间进行计时的,即从现在开始计时到未来的某个时间点。 3. 定时器的启动 hrtimer的启动是通过hrtimer_start函数实现的,该函数设置定时器到期的时间,并启动定时器,如果要在1秒后触发定时器,可以这样操作: ...
hrtimer_init 用于初始化一个hrtimer extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode);- timer:表示hrtimer定时器- which_clock:表示选择系统的哪种时钟,主要包括两种:CLOCK_REALTIME、CLOCK_MONOTONIC,两种时钟的区别是,CLOCK_REALTIME表示绝对时间,而CLOCK_MONOTONI...