diff options
author | Jonas Aaberg <jonas.aberg@stericsson.com> | 2010-06-30 14:00:40 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:03:23 +0200 |
commit | bc52cfb0c0aebaed24dab77b33477a20d4e0a430 (patch) | |
tree | 0336a7e021e3d250e291aea208de33523df6eb43 /init/main.c | |
parent | a4f60cc32fdd87e7cc2c85275bc4f667a6b60d56 (diff) |
Boottime - A tool for automatic measurement of kernel and possible boot loader boot time.
The overhead is very low and the results will be found under sysfs/bootime, as well as
detailed results in debugfs under boottime/. The bootgraph* files are compatible with
scripts/bootgraph.pl. The reason for this patch is to provide data (sysfs/boottime)
suitable for automatic testcases as well as help for developers to reduce the boot
time (debugfs).
Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2760
Change-Id: Id8ea7226b3f1f783448962195193b90699d32fc6
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/3174
Tested-by: Mian Yousaf KAUKAB <mian.yousaf.kaukab@stericsson.com>
Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index 44b2433334c..90c0067c647 100644 --- a/init/main.c +++ b/init/main.c @@ -68,6 +68,7 @@ #include <linux/shmem_fs.h> #include <linux/slab.h> #include <linux/perf_event.h> +#include <linux/boottime.h> #include <asm/io.h> #include <asm/bugs.h> @@ -678,6 +679,8 @@ int __init_or_module do_one_initcall(initcall_t fn) int count = preempt_count(); int ret; + boottime_mark_symbolic(fn); + if (initcall_debug) ret = do_one_initcall_debug(fn); else @@ -802,6 +805,7 @@ static noinline int init_post(void) { /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); + boottime_deactivate(); free_initmem(); mark_rodata_ro(); system_state = SYSTEM_RUNNING; @@ -857,6 +861,7 @@ static int __init kernel_init(void * unused) do_pre_smp_initcalls(); lockup_detector_init(); + boottime_system_up(); smp_init(); sched_init_smp(); @@ -879,6 +884,7 @@ static int __init kernel_init(void * unused) if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) { ramdisk_execute_command = NULL; + boottime_mark("mount+0x0/0x0"); prepare_namespace(); } |