Linux has a very powerful tracing engine built into the kernel itself called Ftrace. Just as you can trace system calls via the (oh so useful) strace(1) (and library APIs via ltrace(1)) utility in user space, you can also trace pretty much every function running in kernel space via Ftrace. Ftrace, though, is much more than simply a function tracer – it's a framework, a linchpin of the kernel's underlying tracing infrastructure.
Steven Rostedt is the original author of Ftrace. His paper entitled Finding Origins of Latencies Using Ftrace is a very good read. You can find it here: https://static.lwn.net/images/conf/rtlws11/papers/proc/p02.pdf.
In this section, we don't intend to cover how to use Ftrace in an in-depth manner as it's really not part of the subject matter here. Learning to use Ftrace isn't difficult, and is a valuable weapon in your kernel...
In this section, we don't intend to cover how to use Ftrace in an in-depth manner as it's really not part of the subject matter here. Learning to use Ftrace isn't difficult, and is a valuable weapon in your kernel...