我使用linux信号(特别是SIGUSR1和SIGUSR2)将信号从内核空间(linux内核模块)发送到用户空间(一个使用内核模块的应用程序)。这些信号得到了正确的处理,功能运行良好。
现在,我想测量信号处理程序的执行时间(最好是纳秒或微秒)。
我尝试过使用gprof,但它没有显示信号处理程序的执行时间。除此之外,它还显示了以秒为单位的执行时间。
我也尝试过使用Ftrace("nop" tracer, function_profile_enabled),但也不起作用。
如何测量信号处理程序的执行时间?
发布于 2014-08-26 18:43:39
对于用户空间程序,请阅读time(7),然后使用clock_gettime(2)和CLOCK_REALTIME来测量时间。不要期望纳秒精度。
另请仔细阅读signal(7)。
我不会使用信号进行内核<->用户空间通信。在Linux上,我建议使用带有netlink(3)函数的netlink(7) (或者在内核模块中提供一个设备来实现这种通信)。您可以使用一些事件循环来处理这些(例如,使用poll(2) ...)
另请参阅strace(1);它为syscall提供了简陋的计时工具...
https://stackoverflow.com/questions/25503714
复制相似问题