【问题标题】:How to find pending timers in Linux kernel如何在 Linux 内核中找到挂起的计时器
【发布时间】:2013-07-30 15:12:19
【问题描述】:

我正在开发 Linux 内核中的驱动程序。我有一个计时器,它会定期做一些事情。例如,每 40 毫秒,计时器就会到期。但是,当我查看某个 arm 函数调用的剩余时间来检索时间时,剩余时间不是 40 毫秒,而是小于 1 毫秒,例如960us。我认为这个剩余时间一定是由其他一些计时器滴答引起的,每 1 毫秒。如何在我的内核中找到挂起的计时器?我试过timer_pending(),但我需要先知道定时器的名字。

欢迎提出任何建议。

【问题讨论】:

  • 其他计时器不会影响您的计时器。为什么你认为这会是个问题?
  • 确实如此。但是,看起来有一个计时器滴答声会影响我对 ARM 计时器的编程。虽然我调用了tick_nohz_idle_enter(),但它仍然有另一个计时器,总是说我需要在40ms之前的时间停止。

标签: timer linux-kernel kernel


【解决方案1】:

所有定时器都列在/proc/timer_list中。

【讨论】:

  • 谢谢,但是如何在内核中找到挂起的计时器?我的意思是不是来自 sysfs。更重要的是,如果我不知道它们的名字,如何禁用任何待处理的计时器?
  • 如果您禁用其他计时器,安装该计时器的代码将中断。您必须找出为什么安装了其他计时器来防止这种情况,如果没有timer_list 中的信息,这是不可能的。
  • /proc/timer_list 中仅列出 HRES 计时器,未列出低分辨率计时器列表
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 2018-08-01
  • 2022-08-24
  • 1970-01-01
  • 2016-01-24
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多