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);

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to