Each trace now can have the size of its trace entries modified
through command line arguments.

trace_fn_entries - function trace entries (default 65536)
trace_irq_entries - irq off trace entries (default 512)
trace_ctx_entries - schedule switch entries (default 16384)

Signed-off-by: Steven Rostedt <[EMAIL PROTECTED]>
---
 lib/tracing/trace_function.c     |   14 ++++++++++++--
 lib/tracing/trace_irqsoff.c      |   14 ++++++++++++--
 lib/tracing/trace_sched_switch.c |   14 ++++++++++++--
 lib/tracing/tracer.h             |    1 -
 4 files changed, 36 insertions(+), 7 deletions(-)

Index: linux-compile.git/lib/tracing/trace_function.c
===================================================================
--- linux-compile.git.orig/lib/tracing/trace_function.c 2008-01-15 
15:13:59.000000000 -0500
+++ linux-compile.git/lib/tracing/trace_function.c      2008-01-15 
15:15:00.000000000 -0500
@@ -18,6 +18,16 @@
 static struct tracing_trace function_trace __read_mostly;
 static DEFINE_PER_CPU(struct tracing_trace_cpu, function_trace_cpu);
 static int trace_enabled __read_mostly;
+static unsigned long trace_nr_entries = (65536UL);
+
+static int __init set_nr_entries(char *str)
+{
+       if (!str)
+               return 0;
+       trace_nr_entries = simple_strtoul(str, &str, 0);
+       return 1;
+}
+__setup("trace_fn_entries=", set_nr_entries);
 
 static notrace void function_trace_reset(struct tracing_trace *tr)
 {
@@ -132,7 +142,7 @@ static void function_trace_close(struct 
 
 __init static int function_trace_alloc_buffers(void)
 {
-       const int order = page_order(TRACING_NR_ENTRIES * TRACING_ENTRY_SIZE);
+       const int order = page_order(trace_nr_entries * TRACING_ENTRY_SIZE);
        const unsigned long size = (1UL << order) << PAGE_SHIFT;
        struct tracing_entry *array;
        int i;
@@ -156,7 +166,7 @@ __init static int function_trace_alloc_b
        function_trace.entries = size / TRACING_ENTRY_SIZE;
 
        pr_info("function tracer: %ld bytes allocated for %ld",
-               size, TRACING_NR_ENTRIES);
+               size, trace_nr_entries);
        pr_info(" entries of %ld bytes\n", (long)TRACING_ENTRY_SIZE);
        pr_info("   actual entries %ld\n", function_trace.entries);
 
Index: linux-compile.git/lib/tracing/trace_irqsoff.c
===================================================================
--- linux-compile.git.orig/lib/tracing/trace_irqsoff.c  2008-01-15 
15:13:59.000000000 -0500
+++ linux-compile.git/lib/tracing/trace_irqsoff.c       2008-01-15 
15:15:00.000000000 -0500
@@ -25,6 +25,16 @@ static unsigned long preempt_max_latency
 static unsigned long preempt_thresh;
 static __cacheline_aligned_in_smp DEFINE_MUTEX(max_mutex);
 static int trace_enabled __read_mostly;
+static unsigned long trace_nr_entries = (512UL);
+
+static int __init set_nr_entries(char *str)
+{
+       if (!str)
+               return 0;
+       trace_nr_entries = simple_strtoul(str, &str, 0);
+       return 1;
+}
+__setup("trace_irq_entries=", set_nr_entries);
 
 /*
  * max trace is switched with this buffer.
@@ -497,7 +507,7 @@ static void notrace irqsoff_trace_close(
 
 __init static int trace_irqsoff_alloc_buffers(void)
 {
-       const int order = page_order(TRACING_NR_ENTRIES * TRACING_ENTRY_SIZE);
+       const int order = page_order(trace_nr_entries * TRACING_ENTRY_SIZE);
        const unsigned long size = (1UL << order) << PAGE_SHIFT;
        struct tracing_entry *array;
        int i;
@@ -535,7 +545,7 @@ __init static int trace_irqsoff_alloc_bu
        max_tr.stop = irqsoff_stop;
 
        pr_info("irqs off tracer: %ld bytes allocated for %ld",
-               size, TRACING_NR_ENTRIES);
+               size, trace_nr_entries);
        pr_info(" entries of %d bytes\n", (int)TRACING_ENTRY_SIZE);
        pr_info("   actual entries %ld\n", irqsoff_trace.entries);
 
Index: linux-compile.git/lib/tracing/tracer.h
===================================================================
--- linux-compile.git.orig/lib/tracing/tracer.h 2008-01-15 15:13:59.000000000 
-0500
+++ linux-compile.git/lib/tracing/tracer.h      2008-01-15 15:15:00.000000000 
-0500
@@ -76,7 +76,6 @@ struct tracing_iterator {
 };
 
 #define TRACING_ENTRY_SIZE sizeof(struct tracing_entry)
-#define TRACING_NR_ENTRIES (65536UL)
 
 void notrace tracing_reset(struct tracing_trace_cpu *data);
 int tracing_open_generic(struct inode *inode, struct file *filp);
Index: linux-compile.git/lib/tracing/trace_sched_switch.c
===================================================================
--- linux-compile.git.orig/lib/tracing/trace_sched_switch.c     2008-01-15 
15:13:59.000000000 -0500
+++ linux-compile.git/lib/tracing/trace_sched_switch.c  2008-01-15 
15:15:00.000000000 -0500
@@ -18,6 +18,16 @@ static struct tracing_trace sched_switch
 static DEFINE_PER_CPU(struct tracing_trace_cpu, sched_switch_trace_cpu);
 
 static int trace_enabled __read_mostly;
+static unsigned long trace_nr_entries = (16384UL);
+
+static int __init set_nr_entries(char *str)
+{
+       if (!str)
+               return 0;
+       trace_nr_entries = simple_strtoul(str, &str, 0);
+       return 1;
+}
+__setup("trace_ctx_entries=", set_nr_entries);
 
 static notrace void sched_switch_callback(const struct marker *mdata,
                                          void *private_data,
@@ -144,7 +154,7 @@ static void sched_switch_trace_close(str
 
 __init static int sched_switch_trace_alloc_buffers(void)
 {
-       const int order = page_order(TRACING_NR_ENTRIES * TRACING_ENTRY_SIZE);
+       const int order = page_order(trace_nr_entries * TRACING_ENTRY_SIZE);
        const unsigned long size = (1UL << order) << PAGE_SHIFT;
        struct tracing_entry *array;
        int ret;
@@ -170,7 +180,7 @@ __init static int sched_switch_trace_all
        sched_switch_trace.entries = size / TRACING_ENTRY_SIZE;
 
        pr_info("sched_switch tracer: %ld bytes allocated for %ld",
-               size, TRACING_NR_ENTRIES);
+               size, trace_nr_entries);
        pr_info(" entries of %ld bytes\n", (long)TRACING_ENTRY_SIZE);
        pr_info("   actual entries %ld\n", sched_switch_trace.entries);
 

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to