Linux内核函数调用流程

问题描述 投票:0回答:1

是否有一种方法可以了解在某个事件期间调用了哪些内核函数。

例如,如果我按下键盘上的任何键,我想知道在调用字符(与我在键盘上键入的键相对应的字符)出现在屏幕上之前,所有内核函数和设备驱动程序函数将被调用什么。

我想将完整的流程转储到某个地方,以后再检查。我说的是内核空间函数-不是用户空间函数。

c linux-kernel linux-device-driver stack-trace perf
1个回答
0
投票

我想知道正在调用什么[[所有内核功能和设备驱动程序功能]

显然,跟踪的完整性取决于它从何处开始。这取决于您。

您可以通过方便的trace-cmd来查找所需内容。例如。您可以获取功能图。首先,您需要根据需要确定一些切入点。如果是关于按键盘的操作,则需要找到其驱动程序和与其相关的一些功能。

示例:经典AT和PS / 2键盘驱动程序trace-cmd具有中断功能atkbd。让我们检查是否存在这样的跟踪点:

atkbd

然后开始录制:

atkbd_interrupt

按某些键并停止录音:先按atkbd_interrupt,然后按trace-cmd list -f | grep atkbd_int
。现在您可以获得功能图:

trace-cmd record -p function_graph -g atkbd_interrupt &

将会是这样:

fg

例如,只是一点点痕迹。我在我的qemu VM中做到了。
© www.soinside.com 2019 - 2024. All rights reserved.