gpt4 book ai didi

c - Linux 内核中的进入和退出打印

转载 作者:太空狗 更新时间:2023-10-29 16:12:58 25 4
gpt4 key购买 nike

我想知道在特定场景下执行了哪些所有功能。

具体来说,我想了解 Linux 内核中的 MMC/SD 卡堆栈。

我的想法是像这样打印:

pr_info("Entering %s\n", __func__);

pr_info("Leaving %s\n", __func__);

drivers/mmc/ 中的所有函数。

但这是一项繁琐的任务。

有更好的方法吗?

注意:我探索了使用 gcc __cyg_profile_func_enter__cyg_profile_func_exit 提供的检测函数的可能性。

这些检测函数非常适合小模块。

但是这些功能也可以在 Linux 内核中使用吗?或者我们对此有一些不同的方法吗?

我的环境:代码将针对 Cortex A7/A9 进行交叉编译。

最佳答案

您可以使用-finstrument-functions 编译您想要的源文件。然后你可以在内核的某个文件中自己实现这两个函数。

注意:

  1. 您不得使用 -finstrument-functions 编译包含 __cyg_profile_func_enter/exit 的文件(或者,您应该使用 __attribute__((no_instrument_function))).
  2. 函数 __cyg_profile_func_enter/exit 不得调用使用 -finstrument-functions 编译的代码 - 这将导致无限递归。如果他们所做的只是 printk,而 printk 和它调用的低级驱动程序不是以这种方式编译的,那么你就可以了。

关于c - Linux 内核中的进入和退出打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com