我试图通过查看linux内核的源代码来理解函数clock_gettime
的行为。
我目前正在使用4.4.0-83-lowlatency
,但我只能获取4.4.76
源文件(但它应该足够接近)。
我的第一个问题是该函数有几次出现。我选择的pc_clock_gettime
似乎是最近的,也是唯一一个处理CLOCK_MONOTONIC_RAW
的人,但如果我错了,请纠正我。
我追踪了该函数的执行流程,并找到了与以太网驱动程序相关的神秘ravb_ptp_gettime64
和ravb_ptp_time_read
。
那么......当我要求系统给我时间时,如果我理解正确,它会询问以太网驱动程序吗?
这是我第一次查看内核代码,所以我不习惯它。如果有人能给我一个“如何”和“为什么”的解释,那就太棒了。
答案 0 :(得分:0)
"workbench.colorCustomizations": {
"editor.lineHighlightBackground": "#ff0000",
}
使用一种名为vDSO的机制(虚拟动态共享对象)。这是一个共享库,由内核在用户空间中映射。
vDSO允许频繁使用clock_gettime
,而不会降低性能。因此,内核将时间信息“投入”到用户程序可以访问的内存中。最后,它不会是系统调用,而只是一个简单的函数调用。