lkml.org 
[lkml]   [2011]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 15/20] trace: Add a new readonly entry to report total buffer size
    From: Vaibhav Nagarnaik <vnagarnaik@google.com>

    The current file "buffer_size_kb" reports the size of per-cpu buffer and
    not the overall memory allocated which could be misleading. A new file
    "buffer_total_size_kb" adds up all the enabled CPU buffer sizes and
    reports it. This is only a readonly entry.

    Signed-off-by: Vaibhav Nagarnaik <vnagarnaik@google.com>
    Cc: Michael Rubin <mrubin@google.com>
    Cc: David Sharp <dhsharp@google.com>
    Link: http://lkml.kernel.org/r/1313531179-9323-2-git-send-email-vnagarnaik@google.com
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace.c | 33 +++++++++++++++++++++++++++++++++
    1 files changed, 33 insertions(+), 0 deletions(-)

    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index e5df02c..0117678 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -3569,6 +3569,30 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
    }

    static ssize_t
    +tracing_total_entries_read(struct file *filp, char __user *ubuf,
    + size_t cnt, loff_t *ppos)
    +{
    + struct trace_array *tr = filp->private_data;
    + char buf[64];
    + int r, cpu;
    + unsigned long size = 0, expanded_size = 0;
    +
    + mutex_lock(&trace_types_lock);
    + for_each_tracing_cpu(cpu) {
    + size += tr->entries >> 10;
    + if (!ring_buffer_expanded)
    + expanded_size += trace_buf_size >> 10;
    + }
    + if (ring_buffer_expanded)
    + r = sprintf(buf, "%lu\n", size);
    + else
    + r = sprintf(buf, "%lu (expanded: %lu)\n", size, expanded_size);
    + mutex_unlock(&trace_types_lock);
    +
    + return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
    +}
    +
    +static ssize_t
    tracing_free_buffer_write(struct file *filp, const char __user *ubuf,
    size_t cnt, loff_t *ppos)
    {
    @@ -3739,6 +3763,12 @@ static const struct file_operations tracing_entries_fops = {
    .llseek = generic_file_llseek,
    };

    +static const struct file_operations tracing_total_entries_fops = {
    + .open = tracing_open_generic,
    + .read = tracing_total_entries_read,
    + .llseek = generic_file_llseek,
    +};
    +
    static const struct file_operations tracing_free_buffer_fops = {
    .write = tracing_free_buffer_write,
    .release = tracing_free_buffer_release,
    @@ -4450,6 +4480,9 @@ static __init int tracer_init_debugfs(void)
    trace_create_file("buffer_size_kb", 0644, d_tracer,
    &global_trace, &tracing_entries_fops);

    + trace_create_file("buffer_total_size_kb", 0444, d_tracer,
    + &global_trace, &tracing_total_entries_fops);
    +
    trace_create_file("free_buffer", 0644, d_tracer,
    &global_trace, &tracing_free_buffer_fops);

    --
    1.7.6.3

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2011-10-10 15:45    [W:4.332 / U:0.200 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site