我正在使用linux信号(特别是SIGUSR1
和SIGUSR2
)将信号从内核空间(Linux内核模块)发送到用户空间(使用内核模块的应用程序)。这些信号处理得当,功能正常。
现在我想测量信号处理程序的执行时间(最好是以纳秒或微秒为单位)。
我尝试使用gprof
,但它没有显示信号处理程序的执行时间。除此之外,它还以秒为单位显示执行时间。
我也尝试使用Ftrace("nop" tracer, function_profile_enabled)
,但这也不起作用。
如何衡量信号处理程序的执行时间?
答案 0 :(得分:1)
对于用户空间计划,请阅读time(7),然后使用clock_gettime(2)和CLOCK_REALTIME
来衡量时间。不要指望纳秒精度。
仔细阅读signal(7)。
我不会将信号用于内核< - >用户空间通信。在Linux上,我建议将netlink(7)与netlink(3)函数一起使用(或在内核模块中为该通信提供一个设备)。您可以使用一些事件循环来处理这些问题(例如使用poll(2) ...)
另见strace(1);它有系统调用的原始计时设施......