1

In kernel backtrace what is the meaning of single underscore eg:

[   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

I tried searching _interrupt_connect and _gmodule_ioctl function in kernel source code. I was not able to find them.

  • 1
    There is no special, somehow hard coded meaning to the underscores. It is simply part of the function or symbol name. There are some conventions about having the name of an internal symbol start with an underscore, but those are only conventions, not more, not less. note that the symbols are not necessarily part of the kernel code. They might also be defined in some library loaded. – arkascha May 25 '15 at 21:00

2 Answers2

2

_interrupt_connect(), _ioctl and _gmodule_ioctl are just functions, and underscore is just part of those functions' names.

What you should pay attention to is stuff like [kbde] and [ubde] on the right of those functions. They are probably kernel module names. Those modules are not part of kernel itself (they were built as external modules). And functions that you are talking about are basically the part of those modules. That's why you can't find those functions in kernel code.

So those modules were loaded into kernel (they are not built-in modules). You should look for sources of those modules. But you may find out that they are proprietary, in that case no code will be available (unless you are one of authors/maintainers of that code).

Sam Protsenko
  • 14,045
  • 4
  • 59
  • 75
0

Single underscore in stack trace do not have any special meaning, Its was just part of the function name. I was not able to find it my work space because it was coming from some third party kernel module (kbde) for which the source code was not there in my work space.