码迷,mamicode.com
首页 > 其他好文 > 详细

initcall_debug参数定位初始化过程的错误信息发生的位置

时间:2015-02-12 12:30:30      阅读:446      评论:0      收藏:0      [点我收藏+]

标签:内核编译

可用的核心参数可以参考Documents/kernel-parameters.txt

或者看代码的时候有调试功能的函数对应的开关变量。

kernel参数里面加入:initcall_debug即可调用do_one_initcall_debug

int __init_or_module do_one_initcall(initcall_t fn)
{
    int count = preempt_count();
    int ret;
    char msgbuf[64];

    if (initcall_blacklisted(fn))
        return -EPERM;

    if (initcall_debug)
        ret = do_one_initcall_debug(fn);
    else
        ret = fn();



static int __init_or_module do_one_initcall_debug(initcall_t fn)
{
    ktime_t calltime, delta, rettime;
    unsigned long long duration;
    int ret;

    printk(KERN_DEBUG "calling  %pF @ %i\n", fn, task_pid_nr(current));
    calltime = ktime_get();
    ret = fn();
    rettime = ktime_get();
    delta = ktime_sub(rettime, calltime);
    duration = (unsigned long long) ktime_to_ns(delta) >> 10;
    printk(KERN_DEBUG "initcall %pF returned %d after %lld usecs\n",
         fn, ret, duration);


    return ret;
}

以calling开始,以initcall结束:

[    2.359680] calling  acpi_thermal_init+0x0/0x3c @ 1

[    2.360809] ACPI: [Package] has zero elements (f5636f00)
[    2.360813] ACPI: Invalid passive threshold
[    2.365070] thermal LNXTHERM:00: registered as thermal_zone0
[    2.365078] ACPI: Thermal Zone [THRM] (55 C)

[    2.365180] initcall acpi_thermal_init+0x0/0x3c returned 0 after 5365 usecs

可以看出ACPI: [Package] has zero elements这个信息出现在acpi_thermal_init()函数中

initcall_debug参数定位初始化过程的错误信息发生的位置

标签:内核编译

原文地址:http://blog.csdn.net/oldlinux/article/details/43760407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!