使用printk在内核空间中显示函数调用者的名称

时间:2017-01-14 07:03:36

标签: linux gcc linux-kernel arm linux-device-driver

通常要打印start_kernel中执行的当前函数,我们可以在启用printk("%s %d",__FUNCTION__,__LINE__)的情况下使用early_printk。但有没有办法通过用其他东西替换__FUNCTION__来打印调用者的名字。这适用于ARM体系结构。我在__builtin_return_address(1)的一个函数中使用了start_kernel,它在ARM中不起作用,因为ARM在R14中存储了返回地址。

我还尝试在char sym[KSYM_SYMBOL_LEN];函数调用后打印sprint_symbol(sym,(unsigned long)tick_init); tick_init之类的符号名称。但它不起作用。我认为这是因为kallsyms在启动过程中不会出现这么早。有没有办法让它发挥作用。

0 个答案:

没有答案
相关问题