void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode) { struct hrtimer_clock_base *base, *new_base; base = lock_hrtimer_base(timer, &flags); /* Switch the timer base, if necessary: */ new_base = switch_hrtimer_base(timer, ...
int hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode); 如果需要指定到期范围,则可以使用hrtimer_start_range_ns激活定时器: [cpp]view plain copy hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, long range_ns, const enum ...
EXPORT_SYMBOL_GPL(hrtimer_start_range_ns); 参数tim 保存了定时器的“软”到期时间。参数 delta_ns 是到期时间的范围,所以硬到期时间就是tim+delta_ns。参数 mode 指定了到期时间的类型。在获得了定时器对应 CPU 的hrtimer_cpu_base 结构体内的自旋锁后,其接着调用了 __hrtimer_start_range_ns 函数: static...
int hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode); 如果需要指定到期范围,则可以使用hrtimer_start_range_ns激活定时器: hrtimer_start_range_ns(structhrtimer *timer, ktime_t tim, unsignedlongrange_ns,constenumhrtimer_mode mode); hrtimer_start_range_ns(struct hrt...
int hrtimer_start(struct hrtimer *timer, ktime_t tim, constenum hrtimer_mode mode); 如果需要指定到期范围,则可以使用hrtimer_start_range_ns激活定时器: [cpp]view plaincopy hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, unsignedlong range_ns,constenum hrtimer_mode mode); ...
static int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, u64 delta_ns, const enum hrtimer_mode mode, struct hrtimer_clock_base *base) { struct hrtimer_clock_base *new_base;/* Remove an active timer from the queue: */...
hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack); if (do_nanosleep(&t, mode)) goto out; /* Absolute timers do not update the rmtp value and restart: */ if (mode == HRTIMER_MODE_ABS) { ret = -ERESTARTNOHAND; ...
hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack); if (do_nanosleep(&t, mode)) goto out; /* Absolute timers do not update the rmtp value and restart: */ if (mode == HRTIMER_MODE_ABS) { ret = -ERESTARTNOHAND; ...
hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack); if (do_nanosleep(&t, mode)) goto out; /* Absolute timers do not update the rmtp value and restart: */ if (mode == HRTIMER_MODE_ABS) { ret = -ERESTARTNOHAND; ...
> [67628.393712] hrtimer_start_range_ns+0x1b0/0x420 > [67628.393715] msg_submit+0x100/0x108 > [67628.393717] mbox_send_message+0x84/0x128 > [67628.393720] scpi_send_message+0x11c/0x2a8 > [67628.393723] scpi_dvfs_set_idx+0x48/0x70 ...