#undef TRACE_SYSTEM #define TRACE_SYSTEM rcu #if !defined(_TRACE_RCU_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_RCU_H #include /* * Tracepoint for calling rcu_do_batch, performed to start callback invocation: */ TRACE_EVENT(rcu_batch_start, TP_PROTO(long callbacks_ready, int blimit), TP_ARGS(callbacks_ready, blimit), TP_STRUCT__entry( __field( long, callbacks_ready ) __field( int, blimit ) ), TP_fast_assign( __entry->callbacks_ready = callbacks_ready; __entry->blimit = blimit; ), TP_printk("CBs=%ld bl=%d", __entry->callbacks_ready, __entry->blimit) ); /* * Tracepoint for the invocation of a single RCU callback */ TRACE_EVENT(rcu_invoke_callback, TP_PROTO(struct rcu_head *rhp), TP_ARGS(rhp), TP_STRUCT__entry( __field( void *, rhp ) __field( void *, func ) ), TP_fast_assign( __entry->rhp = rhp; __entry->func = rhp->func; ), TP_printk("rhp=%p func=%pf", __entry->rhp, __entry->func) ); /* * Tracepoint for the invocation of a single RCU kfree callback */ TRACE_EVENT(rcu_invoke_kfree_callback, TP_PROTO(struct rcu_head *rhp, unsigned long offset), TP_ARGS(rhp, offset), TP_STRUCT__entry( __field(void *, rhp ) __field(unsigned long, offset ) ), TP_fast_assign( __entry->rhp = rhp; __entry->offset = offset; ), TP_printk("rhp=%p func=%ld", __entry->rhp, __entry->offset) ); /* * Tracepoint for leaving rcu_do_batch, performed after callback invocation: */ TRACE_EVENT(rcu_batch_end, TP_PROTO(int callbacks_invoked), TP_ARGS(callbacks_invoked), TP_STRUCT__entry( __field( int, callbacks_invoked ) ), TP_fast_assign( __entry->callbacks_invoked = callbacks_invoked; ), TP_printk("CBs-invoked=%d", __entry->callbacks_invoked) ); #endif /* _TRACE_RCU_H */ /* This part must be outside protection */ #include