138 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM percpu4 5#if !defined(_TRACE_PERCPU_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_PERCPU_H7 8#include <linux/tracepoint.h>9#include <trace/events/mmflags.h>10 11TRACE_EVENT(percpu_alloc_percpu,12 13 TP_PROTO(unsigned long call_site,14 bool reserved, bool is_atomic, size_t size,15 size_t align, void *base_addr, int off,16 void __percpu *ptr, size_t bytes_alloc, gfp_t gfp_flags),17 18 TP_ARGS(call_site, reserved, is_atomic, size, align, base_addr, off,19 ptr, bytes_alloc, gfp_flags),20 21 TP_STRUCT__entry(22 __field( unsigned long, call_site )23 __field( bool, reserved )24 __field( bool, is_atomic )25 __field( size_t, size )26 __field( size_t, align )27 __field( void *, base_addr )28 __field( int, off )29 __field( void __percpu *, ptr )30 __field( size_t, bytes_alloc )31 __field( unsigned long, gfp_flags )32 ),33 TP_fast_assign(34 __entry->call_site = call_site;35 __entry->reserved = reserved;36 __entry->is_atomic = is_atomic;37 __entry->size = size;38 __entry->align = align;39 __entry->base_addr = base_addr;40 __entry->off = off;41 __entry->ptr = ptr;42 __entry->bytes_alloc = bytes_alloc;43 __entry->gfp_flags = (__force unsigned long)gfp_flags;44 ),45 46 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",47 (void *)__entry->call_site,48 __entry->reserved, __entry->is_atomic,49 __entry->size, __entry->align,50 __entry->base_addr, __entry->off, __entry->ptr,51 __entry->bytes_alloc, show_gfp_flags(__entry->gfp_flags))52);53 54TRACE_EVENT(percpu_free_percpu,55 56 TP_PROTO(void *base_addr, int off, void __percpu *ptr),57 58 TP_ARGS(base_addr, off, ptr),59 60 TP_STRUCT__entry(61 __field( void *, base_addr )62 __field( int, off )63 __field( void __percpu *, ptr )64 ),65 66 TP_fast_assign(67 __entry->base_addr = base_addr;68 __entry->off = off;69 __entry->ptr = ptr;70 ),71 72 TP_printk("base_addr=%p off=%d ptr=%p",73 __entry->base_addr, __entry->off, __entry->ptr)74);75 76TRACE_EVENT(percpu_alloc_percpu_fail,77 78 TP_PROTO(bool reserved, bool is_atomic, size_t size, size_t align),79 80 TP_ARGS(reserved, is_atomic, size, align),81 82 TP_STRUCT__entry(83 __field( bool, reserved )84 __field( bool, is_atomic )85 __field( size_t, size )86 __field( size_t, align )87 ),88 89 TP_fast_assign(90 __entry->reserved = reserved;91 __entry->is_atomic = is_atomic;92 __entry->size = size;93 __entry->align = align;94 ),95 96 TP_printk("reserved=%d is_atomic=%d size=%zu align=%zu",97 __entry->reserved, __entry->is_atomic,98 __entry->size, __entry->align)99);100 101TRACE_EVENT(percpu_create_chunk,102 103 TP_PROTO(void *base_addr),104 105 TP_ARGS(base_addr),106 107 TP_STRUCT__entry(108 __field( void *, base_addr )109 ),110 111 TP_fast_assign(112 __entry->base_addr = base_addr;113 ),114 115 TP_printk("base_addr=%p", __entry->base_addr)116);117 118TRACE_EVENT(percpu_destroy_chunk,119 120 TP_PROTO(void *base_addr),121 122 TP_ARGS(base_addr),123 124 TP_STRUCT__entry(125 __field( void *, base_addr )126 ),127 128 TP_fast_assign(129 __entry->base_addr = base_addr;130 ),131 132 TP_printk("base_addr=%p", __entry->base_addr)133);134 135#endif /* _TRACE_PERCPU_H */136 137#include <trace/define_trace.h>138