0x9*_*x90 1 c linux arm clock linux-kernel
我有一个嵌入式系统,我想在内核模块/驱动程序中共享最准确的时钟,其中一个用户空间应用程序对时钟非常敏感,应该是最准确的.
这些功能需要上下文切换和巨大的开销,因为系统调用,时钟将不准确.
我认为增加共享整数每一个瞬间从内核模块,假设用户空间应用程序可以直接访问它,问题是,我不能共享一个integer/long未对齐到页面大小,并宣布了一个全新的页面只有一个long变量是一个巨大的开销.
我该怎么办?
你想用clock_gettime()用或者用于获取当前时间(自启动以来)CLOCK_MONOTONIC(单调的,但不是稳定的,因为它是由NTP影响)或CLOCK_MONOTONIC_RAW(单调和稳定的,但是Linux特有的,并且需要一个内核> = 2.6.28).
要以准确的间隔醒来,请使用clock_nanosleep()并指定TIMER_ABSTIME.不幸的是clock_nanosleep()只支持CLOCK_MONOTONIC而不支持CLOCK_MONOTONIC_RAW,所以你不能通过获得的唤醒时间CLOCK_MONOTONIC_RAW因为这些时钟可能不同.不要忘记检查返回代码EINTR.
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |