利用亚微秒精度测量Linux内核空间的时间

Joh*_*rts 10 c linux time linux-kernel

我目前正在使用该do_gettimeofday()函数来测量内核中的时间,这给了我微秒的精度.有没有比这更精确的东西(可能是纳秒级)?

caf*_*caf 14

ktime_get()函数返回ktime_t,这已经纳秒的分辨率.

  • @JohnRoberts:您需要使用`%lld`打印出一个`long long int`. (3认同)

Won*_*nil 5

据我所知,最精确的计时器应该是处理器特定的计数器寄存器(例如x86中的TSC)。Linux内核从“ ./arch/x86/include/asm/msr.h”文件中提供rdtsc,rdtscl和rdtscll宏来读取此寄存器值。对于ARM,循环计数器寄存器

这些寄存器因CPU而异。访问它的通用接口是“ get_cycles”函数,该函数在文件中声明。

也许该文档会有所帮助。