diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2008-10-02 06:59:20 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-14 04:39:11 -0400 |
commit | cb5ab74204a6e2579d1119bf1348eb806526b12b (patch) | |
tree | 4810258d42e0370ec15cf424d5e3c6487fbd1781 /init/main.c | |
parent | 77ae11f63befb7fc41ec256f1fcb72ca7e4160d5 (diff) |
tracing/fastboot: change the printing of boot tracer according to bootgraph.pl
Change the boot tracer printing to make it parsable for
the scripts/bootgraph.pl script.
We have now to output two lines for each initcall, according to the
printk in do_one_initcall() in init/main.c
We need now the call's time and the return's time.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/init/main.c b/init/main.c index 1e39a1eab190..61eb66159391 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -706,34 +706,32 @@ __setup("initcall_debug", initcall_debug_setup); | |||
706 | int do_one_initcall(initcall_t fn) | 706 | int do_one_initcall(initcall_t fn) |
707 | { | 707 | { |
708 | int count = preempt_count(); | 708 | int count = preempt_count(); |
709 | ktime_t t0, t1, delta; | 709 | ktime_t delta; |
710 | char msgbuf[64]; | 710 | char msgbuf[64]; |
711 | int result; | ||
712 | struct boot_trace it; | 711 | struct boot_trace it; |
713 | 712 | ||
714 | if (initcall_debug) { | 713 | if (initcall_debug) { |
715 | it.caller = task_pid_nr(current); | 714 | it.caller = task_pid_nr(current); |
716 | it.func = fn; | 715 | it.func = fn; |
717 | printk("calling %pF @ %i\n", fn, it.caller); | 716 | printk("calling %pF @ %i\n", fn, it.caller); |
718 | t0 = ktime_get(); | 717 | it.calltime = ktime_get(); |
719 | } | 718 | } |
720 | 719 | ||
721 | result = fn(); | 720 | it.result = fn(); |
722 | 721 | ||
723 | if (initcall_debug) { | 722 | if (initcall_debug) { |
724 | t1 = ktime_get(); | 723 | it.rettime = ktime_get(); |
725 | delta = ktime_sub(t1, t0); | 724 | delta = ktime_sub(it.rettime, it.calltime); |
726 | it.result = result; | ||
727 | it.duration = (unsigned long long) delta.tv64 >> 20; | 725 | it.duration = (unsigned long long) delta.tv64 >> 20; |
728 | printk("initcall %pF returned %d after %Ld msecs\n", fn, | 726 | printk("initcall %pF returned %d after %Ld msecs\n", fn, |
729 | result, it.duration); | 727 | it.result, it.duration); |
730 | trace_boot(&it); | 728 | trace_boot(&it); |
731 | } | 729 | } |
732 | 730 | ||
733 | msgbuf[0] = 0; | 731 | msgbuf[0] = 0; |
734 | 732 | ||
735 | if (result && result != -ENODEV && initcall_debug) | 733 | if (it.result && it.result != -ENODEV && initcall_debug) |
736 | sprintf(msgbuf, "error code %d ", result); | 734 | sprintf(msgbuf, "error code %d ", it.result); |
737 | 735 | ||
738 | if (preempt_count() != count) { | 736 | if (preempt_count() != count) { |
739 | strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf)); | 737 | strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf)); |
@@ -747,7 +745,7 @@ int do_one_initcall(initcall_t fn) | |||
747 | printk("initcall %pF returned with %s\n", fn, msgbuf); | 745 | printk("initcall %pF returned with %s\n", fn, msgbuf); |
748 | } | 746 | } |
749 | 747 | ||
750 | return result; | 748 | return it.result; |
751 | } | 749 | } |
752 | 750 | ||
753 | 751 | ||