lkml.org 
[lkml]   [2009]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:tracing/core] tracing, kmemtrace: Make kmem tracepoints use TRACE_EVENT macro
    Commit-ID:  fc182a4330fc22ea1b68fa3d5064dd85a73a4c4a
    Gitweb: http://git.kernel.org/tip/fc182a4330fc22ea1b68fa3d5064dd85a73a4c4a
    Author: Zhaolei <zhaolei@cn.fujitsu.com>
    AuthorDate: Fri, 10 Apr 2009 14:27:38 +0800
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Sun, 12 Apr 2009 15:22:56 +0200

    tracing, kmemtrace: Make kmem tracepoints use TRACE_EVENT macro

    TRACE_EVENT is a more generic way to define tracepoints.
    Doing so adds these new capabilities to this tracepoint:

    - zero-copy and per-cpu splice() tracing
    - binary tracing without printf overhead
    - structured logging records exposed under /debug/tracing/events
    - trace events embedded in function tracer output and other plugins
    - user-defined, per tracepoint filter expressions

    Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
    Acked-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
    Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    LKML-Reference: <49DEE6DA.80600@cn.fujitsu.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>


    ---
    include/trace/kmem.h | 39 +-------
    include/trace/kmem_event_types.h | 193 +++++++++++++++++++++++++++++++++++++
    include/trace/trace_event_types.h | 1 +
    include/trace/trace_events.h | 1 +
    4 files changed, 197 insertions(+), 37 deletions(-)

    diff --git a/include/trace/kmem.h b/include/trace/kmem.h
    index 24d2519..46efc24 100644
    --- a/include/trace/kmem.h
    +++ b/include/trace/kmem.h
    @@ -1,44 +1,9 @@
    #ifndef _TRACE_KMEM_H
    #define _TRACE_KMEM_H

    -#include <linux/tracepoint.h>
    #include <linux/types.h>
    +#include <linux/tracepoint.h>

    -DECLARE_TRACE(kmalloc,
    - TP_PROTO(unsigned long call_site,
    - const void *ptr,
    - size_t bytes_req,
    - size_t bytes_alloc,
    - gfp_t gfp_flags),
    - TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags));
    -DECLARE_TRACE(kmem_cache_alloc,
    - TP_PROTO(unsigned long call_site,
    - const void *ptr,
    - size_t bytes_req,
    - size_t bytes_alloc,
    - gfp_t gfp_flags),
    - TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags));
    -DECLARE_TRACE(kmalloc_node,
    - TP_PROTO(unsigned long call_site,
    - const void *ptr,
    - size_t bytes_req,
    - size_t bytes_alloc,
    - gfp_t gfp_flags,
    - int node),
    - TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node));
    -DECLARE_TRACE(kmem_cache_alloc_node,
    - TP_PROTO(unsigned long call_site,
    - const void *ptr,
    - size_t bytes_req,
    - size_t bytes_alloc,
    - gfp_t gfp_flags,
    - int node),
    - TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node));
    -DECLARE_TRACE(kfree,
    - TP_PROTO(unsigned long call_site, const void *ptr),
    - TP_ARGS(call_site, ptr));
    -DECLARE_TRACE(kmem_cache_free,
    - TP_PROTO(unsigned long call_site, const void *ptr),
    - TP_ARGS(call_site, ptr));
    +#include <trace/kmem_event_types.h>

    #endif /* _TRACE_KMEM_H */
    diff --git a/include/trace/kmem_event_types.h b/include/trace/kmem_event_types.h
    new file mode 100644
    index 0000000..4ff420f
    --- /dev/null
    +++ b/include/trace/kmem_event_types.h
    @@ -0,0 +1,193 @@
    +
    +/* use <trace/kmem.h> instead */
    +#ifndef TRACE_EVENT
    +# error Do not include this file directly.
    +# error Unless you know what you are doing.
    +#endif
    +
    +#undef TRACE_SYSTEM
    +#define TRACE_SYSTEM kmem
    +
    +TRACE_EVENT(kmalloc,
    +
    + TP_PROTO(unsigned long call_site,
    + const void *ptr,
    + size_t bytes_req,
    + size_t bytes_alloc,
    + gfp_t gfp_flags),
    +
    + TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + __field( size_t, bytes_req )
    + __field( size_t, bytes_alloc )
    + __field( gfp_t, gfp_flags )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + __entry->bytes_req = bytes_req;
    + __entry->bytes_alloc = bytes_alloc;
    + __entry->gfp_flags = gfp_flags;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
    + __entry->call_site,
    + __entry->ptr,
    + __entry->bytes_req,
    + __entry->bytes_alloc,
    + __entry->gfp_flags)
    +);
    +
    +TRACE_EVENT(kmem_cache_alloc,
    +
    + TP_PROTO(unsigned long call_site,
    + const void *ptr,
    + size_t bytes_req,
    + size_t bytes_alloc,
    + gfp_t gfp_flags),
    +
    + TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + __field( size_t, bytes_req )
    + __field( size_t, bytes_alloc )
    + __field( gfp_t, gfp_flags )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + __entry->bytes_req = bytes_req;
    + __entry->bytes_alloc = bytes_alloc;
    + __entry->gfp_flags = gfp_flags;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
    + __entry->call_site,
    + __entry->ptr,
    + __entry->bytes_req,
    + __entry->bytes_alloc,
    + __entry->gfp_flags)
    +);
    +
    +TRACE_EVENT(kmalloc_node,
    +
    + TP_PROTO(unsigned long call_site,
    + const void *ptr,
    + size_t bytes_req,
    + size_t bytes_alloc,
    + gfp_t gfp_flags,
    + int node),
    +
    + TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + __field( size_t, bytes_req )
    + __field( size_t, bytes_alloc )
    + __field( gfp_t, gfp_flags )
    + __field( int, node )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + __entry->bytes_req = bytes_req;
    + __entry->bytes_alloc = bytes_alloc;
    + __entry->gfp_flags = gfp_flags;
    + __entry->node = node;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
    + __entry->call_site,
    + __entry->ptr,
    + __entry->bytes_req,
    + __entry->bytes_alloc,
    + __entry->gfp_flags,
    + __entry->node)
    +);
    +
    +TRACE_EVENT(kmem_cache_alloc_node,
    +
    + TP_PROTO(unsigned long call_site,
    + const void *ptr,
    + size_t bytes_req,
    + size_t bytes_alloc,
    + gfp_t gfp_flags,
    + int node),
    +
    + TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + __field( size_t, bytes_req )
    + __field( size_t, bytes_alloc )
    + __field( gfp_t, gfp_flags )
    + __field( int, node )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + __entry->bytes_req = bytes_req;
    + __entry->bytes_alloc = bytes_alloc;
    + __entry->gfp_flags = gfp_flags;
    + __entry->node = node;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
    + __entry->call_site,
    + __entry->ptr,
    + __entry->bytes_req,
    + __entry->bytes_alloc,
    + __entry->gfp_flags,
    + __entry->node)
    +);
    +
    +TRACE_EVENT(kfree,
    +
    + TP_PROTO(unsigned long call_site, const void *ptr),
    +
    + TP_ARGS(call_site, ptr),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
    +);
    +
    +TRACE_EVENT(kmem_cache_free,
    +
    + TP_PROTO(unsigned long call_site, const void *ptr),
    +
    + TP_ARGS(call_site, ptr),
    +
    + TP_STRUCT__entry(
    + __field( unsigned long, call_site )
    + __field( const void *, ptr )
    + ),
    +
    + TP_fast_assign(
    + __entry->call_site = call_site;
    + __entry->ptr = ptr;
    + ),
    +
    + TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
    +);
    +
    +#undef TRACE_SYSTEM
    diff --git a/include/trace/trace_event_types.h b/include/trace/trace_event_types.h
    index 33b6bfc..552a50e 100644
    --- a/include/trace/trace_event_types.h
    +++ b/include/trace/trace_event_types.h
    @@ -4,3 +4,4 @@
    #include <trace/irq_event_types.h>
    #include <trace/lockdep_event_types.h>
    #include <trace/skb_event_types.h>
    +#include <trace/kmem_event_types.h>
    diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h
    index 0e2aa80..13d6b85 100644
    --- a/include/trace/trace_events.h
    +++ b/include/trace/trace_events.h
    @@ -4,3 +4,4 @@
    #include <trace/irq.h>
    #include <trace/lockdep.h>
    #include <trace/skb.h>
    +#include <trace/kmem.h>

    \
     
     \ /
      Last update: 2009-04-14 00:27    [W:3.454 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site