【问题标题】:Kernel function: lock_timer_base(struct timer_list *, unsigned long *)内核函数:lock_timer_base(struct timer_list *, unsigned long *)
【发布时间】:2012-04-27 01:45:28
【问题描述】:

我正在努力理解,

__mod_timer(struct timer_list *timer, unsigned long expires,
                                                bool pending_only, int pinned)

这是调用lock_timer_base 方法。我不确定,它到底想做什么?有什么想法吗?

【问题讨论】:

    标签: timer linux-kernel delay scheduler


    【解决方案1】:

    它正在尝试重新安排一个计时器。
    timer 指向一个计时器对象,该对象可能会在未来某个时间过期。
    这个函数想改变它,所以它会在另一个时间过期(expires)。

    需要锁定以确保数据不会损坏。
    例如,有可能旧的过期时间刚好是现在,而另一个 CPU 正在同时处理同一个计时器。锁是为了确保一切正常。

    【讨论】:

    • 感谢 ugoren,关于 Linux 用户空间计时器的任何想法(设置计时器而不同时阻塞调用进程)。据我所知,有 jst 2 个系统调用:timer_settime、Alarm。
    • 在用户空间中,定时器并不那么流行。它们随时弹出,使您的代码成为多线程的。最好偶尔看看时间,做自己想做的事。如果你使用select/poll/epoll,你可以告诉他们什么时候起床。
    猜你喜欢
    • 2020-06-18
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2012-01-27
    相关资源
    最近更新 更多