-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Zhaolei
authored and
Ingo Molnar
committed
Apr 12, 2009
1 parent
02af61b
commit fc182a4
Showing
4 changed files
with
197 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,3 +4,4 @@ | |
#include <trace/irq.h> | ||
#include <trace/lockdep.h> | ||
#include <trace/skb.h> | ||
#include <trace/kmem.h> |