0001
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM percpu
0004
0005 #if !defined(_TRACE_PERCPU_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_PERCPU_H
0007
0008 #include <linux/tracepoint.h>
0009 #include <trace/events/mmflags.h>
0010
0011 TRACE_EVENT(percpu_alloc_percpu,
0012
0013 TP_PROTO(unsigned long call_site,
0014 bool reserved, bool is_atomic, size_t size,
0015 size_t align, void *base_addr, int off,
0016 void __percpu *ptr, size_t bytes_alloc, gfp_t gfp_flags),
0017
0018 TP_ARGS(call_site, reserved, is_atomic, size, align, base_addr, off,
0019 ptr, bytes_alloc, gfp_flags),
0020
0021 TP_STRUCT__entry(
0022 __field( unsigned long, call_site )
0023 __field( bool, reserved )
0024 __field( bool, is_atomic )
0025 __field( size_t, size )
0026 __field( size_t, align )
0027 __field( void *, base_addr )
0028 __field( int, off )
0029 __field( void __percpu *, ptr )
0030 __field( size_t, bytes_alloc )
0031 __field( unsigned long, gfp_flags )
0032 ),
0033 TP_fast_assign(
0034 __entry->call_site = call_site;
0035 __entry->reserved = reserved;
0036 __entry->is_atomic = is_atomic;
0037 __entry->size = size;
0038 __entry->align = align;
0039 __entry->base_addr = base_addr;
0040 __entry->off = off;
0041 __entry->ptr = ptr;
0042 __entry->bytes_alloc = bytes_alloc;
0043 __entry->gfp_flags = (__force unsigned long)gfp_flags;
0044 ),
0045
0046 TP_printk("call_site=%pS reserved=%d is_atomic=%d size=%zu align=%zu base_addr=%p off=%d ptr=%p bytes_alloc=%zu gfp_flags=%s",
0047 (void *)__entry->call_site,
0048 __entry->reserved, __entry->is_atomic,
0049 __entry->size, __entry->align,
0050 __entry->base_addr, __entry->off, __entry->ptr,
0051 __entry->bytes_alloc, show_gfp_flags(__entry->gfp_flags))
0052 );
0053
0054 TRACE_EVENT(percpu_free_percpu,
0055
0056 TP_PROTO(void *base_addr, int off, void __percpu *ptr),
0057
0058 TP_ARGS(base_addr, off, ptr),
0059
0060 TP_STRUCT__entry(
0061 __field( void *, base_addr )
0062 __field( int, off )
0063 __field( void __percpu *, ptr )
0064 ),
0065
0066 TP_fast_assign(
0067 __entry->base_addr = base_addr;
0068 __entry->off = off;
0069 __entry->ptr = ptr;
0070 ),
0071
0072 TP_printk("base_addr=%p off=%d ptr=%p",
0073 __entry->base_addr, __entry->off, __entry->ptr)
0074 );
0075
0076 TRACE_EVENT(percpu_alloc_percpu_fail,
0077
0078 TP_PROTO(bool reserved, bool is_atomic, size_t size, size_t align),
0079
0080 TP_ARGS(reserved, is_atomic, size, align),
0081
0082 TP_STRUCT__entry(
0083 __field( bool, reserved )
0084 __field( bool, is_atomic )
0085 __field( size_t, size )
0086 __field( size_t, align )
0087 ),
0088
0089 TP_fast_assign(
0090 __entry->reserved = reserved;
0091 __entry->is_atomic = is_atomic;
0092 __entry->size = size;
0093 __entry->align = align;
0094 ),
0095
0096 TP_printk("reserved=%d is_atomic=%d size=%zu align=%zu",
0097 __entry->reserved, __entry->is_atomic,
0098 __entry->size, __entry->align)
0099 );
0100
0101 TRACE_EVENT(percpu_create_chunk,
0102
0103 TP_PROTO(void *base_addr),
0104
0105 TP_ARGS(base_addr),
0106
0107 TP_STRUCT__entry(
0108 __field( void *, base_addr )
0109 ),
0110
0111 TP_fast_assign(
0112 __entry->base_addr = base_addr;
0113 ),
0114
0115 TP_printk("base_addr=%p", __entry->base_addr)
0116 );
0117
0118 TRACE_EVENT(percpu_destroy_chunk,
0119
0120 TP_PROTO(void *base_addr),
0121
0122 TP_ARGS(base_addr),
0123
0124 TP_STRUCT__entry(
0125 __field( void *, base_addr )
0126 ),
0127
0128 TP_fast_assign(
0129 __entry->base_addr = base_addr;
0130 ),
0131
0132 TP_printk("base_addr=%p", __entry->base_addr)
0133 );
0134
0135 #endif
0136
0137 #include <trace/define_trace.h>