在内核回溯中,单个下划线的含义是什么

时间:2015-05-25 20:45:40

标签: linux linux-kernel kernel stack-trace backtrack-linux

在内核回溯中,单个下划线的含义是什么 例如:

[   22.669572] [df425cf0] [c00085a8] show_stack+0x44/0x160 (unreliable)
    [   22.720393] [df425d20] [c00348d8] __might_sleep+0xfc/0x120
    [   22.758049] [df425d30] [c00ea764] kmem_cache_alloc_notrace+0x8c/0xc8
    [   22.798333] [df425d50] [c0098614] request_threaded_irq+0x78/0x1f8
    [   22.837834] [df425d90] [f16f694c] _interrupt_connect+0xc4/0x150 [kbde]
    [   22.878642] [df425db0] [f19b29e0] _ioctl+0x5ec/0x77c [ubde]
    [   22.916555] [df425e70] [f19b2100] _gmodule_ioctl+0x34/0x44 [ubde]
    [   22.956049] [df425e80] [c0107a00] vfs_ioctl+0xcc/0xec
    [   22.992383] [df425ea0] [c0107be8] do_vfs_ioctl+0x84/0x7e8
    [   23.029770] [df425f10] [c01083e0] sys_ioctl+0x94/0x108
    [   23.066372] [df425f40] [c0011648] ret_from_syscall+0x0/0x4
    [   23.104024] --- Exception: c01 at 0xf8ef4e0

我尝试在内核源代码中搜索_interrupt_connect和_gmodule_ioctl函数。我无法找到它们。

2 个答案:

答案 0 :(得分:2)

_interrupt_connect()_ioctl_gmodule_ioctl只是函数,而下划线只是这些函数名称的一部分。

您应该注意的是这些功能右侧的[kbde][ubde]之类的内容。它们可能是内核模块名称。这些模块不是内核本身的一部分(它们是作为外部模块构建的)。您正在谈论的功能基本上是这些模块的一部分。这就是为什么你在内核代码中找不到这些函数的原因。

所以这些模块被加载到内核中(它们不是内置模块)。您应该查找这些模块的来源。但是你可能会发现它们是专有的,在这种情况下,没有代码可用(除非你是该代码的作者/维护者之一)。

答案 1 :(得分:0)

堆栈跟踪中的单个下划线没有任何特殊含义,它只是函数名称的一部分。 我无法找到它的工作空间,因为它来自某些第三方内核模块(kbde),我的工作空间中没有源代码。

相关问题