Hi, this tiny patch adds a config option to I-pipe to allow starting the system with the tracer compiled in but disabled. You can then enabled it on demand via /proc/ipipe/tracer/enable. This saves a bit time when booting low-end boxes (I wonder why I didn't hacked this earlier...).
Jan
Index: linux-2.6.17.8/kernel/ipipe/Kconfig
===================================================================
--- linux-2.6.17.8.orig/kernel/ipipe/Kconfig
+++ linux-2.6.17.8/kernel/ipipe/Kconfig
@@ -6,7 +6,7 @@ config IPIPE
compiled in.
config IPIPE_TRACE
- bool "Latency Tracing"
+ bool "Latency tracing"
depends on IPIPE && PROC_FS
select FRAME_POINTER
default n
@@ -18,6 +18,15 @@ config IPIPE_TRACE
in-kernel tracing API. The collected data and runtime control
is available via /proc/ipipe/trace/*.
+config IPIPE_TRACE_ENABLE
+ bool "Enable tracing on boot"
+ depends on IPIPE_TRACE
+ default y
+ ---help---
+ Disable this option if you want to arm the tracer after booting
+ manually ("echo 1 > /proc/ipipe/tracer/enable"). This can reduce
+ boot time on slow embedded devices due to the tracer overhead.
+
config IPIPE_TRACE_IRQSOFF
bool "Trace IRQs-off times"
depends on IPIPE_TRACE
@@ -44,3 +53,8 @@ config IPIPE_TRACE_VMALLOC
enabled. This can help to start systems that are low on memory,
but it slightly degrades overall performance. Try this option
when a traced kernel hangs unexpectedly at boot time.
+
+config IPIPE_TRACE_ENABLE_VALUE
+ int
+ default 0 if !IPIPE_TRACE_ENABLE
+ default 1 if IPIPE_TRACE_ENABLE
Index: linux-2.6.17.8/kernel/ipipe/tracer.c
===================================================================
--- linux-2.6.17.8.orig/kernel/ipipe/tracer.c
+++ linux-2.6.17.8/kernel/ipipe/tracer.c
@@ -105,7 +105,7 @@ enum ipipe_trace_type
static struct ipipe_trace_path *trace_paths[NR_CPUS];
#else /* !CONFIG_IPIPE_TRACE_VMALLOC */
-#define IPIPE_DEFAULT_TRACE_STATE 1
+#define IPIPE_DEFAULT_TRACE_STATE CONFIG_IPIPE_TRACE_ENABLE_VALUE
static struct ipipe_trace_path trace_paths[NR_CPUS][IPIPE_TRACE_PATHS] =
{ [0 ... NR_CPUS-1] =
@@ -1217,7 +1217,7 @@ void __init __ipipe_init_tracer(void)
trace_paths[cpu][path].end = -1;
}
}
- ipipe_trace_enable = 1;
+ ipipe_trace_enable = CONFIG_IPIPE_TRACE_ENABLE_VALUE;
#endif /* CONFIG_IPIPE_TRACE_VMALLOC */
trace_dir = create_proc_entry("trace", S_IFDIR, ipipe_proc_root);
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Adeos-main mailing list [email protected] https://mail.gna.org/listinfo/adeos-main
