【问题标题】:How to print the function name of function pointer in a Kernel API?如何在内核 API 中打印函数指针的函数名?
【发布时间】:2015-06-07 06:22:16
【问题描述】:

假设内核空间中有一个函数指针(sock->ops->ioctl())。 现在如何使用 printk 或您知道的任何其他方法打印存储在此指针中的函数的名称。

【问题讨论】:

标签: c kernel function-pointers


【解决方案1】:

根据 Orace 的回答,您可以尝试使用 %pS 而不是 %pF。我已经测试过%pF 不能在 5.10.x 版本的内核中工作,但 %pS 可以工作。此外,我在vsprintf.c找到了相关评论-

%pf%pF 已被废弃,后来被删除,取而代之的是 %ps%pS。重复使用这些说明符时要小心”。

【讨论】:

    【解决方案2】:

    正如上面所说的here

    在Linux内核中,可以直接使用“%pF”格式的printk!

    void *func = &foo;
    printk("func: %pF at address: %p\n", func, func);
    

    同样你知道printk参与其中,你可能已经使用some tools找到documentationabout it

    【讨论】:

    • %pF 只打印地址而不是名称!
    • @user3486405 不,请参阅this。它会打印姓名和地址。
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多