--- zzzz-none-000/linux-4.4.271/include/trace/events/irq.h 2021-06-03 06:22:09.000000000 +0000 +++ hawkeye-5590-750/linux-4.4.271/include/trace/events/irq.h 2023-04-19 10:22:30.000000000 +0000 @@ -8,6 +8,7 @@ struct irqaction; struct softirq_action; +struct tasklet_struct; #define SOFTIRQ_NAME_LIST \ softirq_name(HI) \ @@ -99,6 +100,54 @@ __entry->irq, __entry->ret ? "handled" : "unhandled") ); +/** + * tlet_entry - called immediately before the tasklet handler + * @t: pointer to struct tasklet_struct + * + * When used in combination with the tlet_exit tracepoint we can + * determine the latency of the tasklet. + */ +TRACE_EVENT(tlet_entry, + + TP_PROTO(struct tasklet_struct *t), + + TP_ARGS(t), + + TP_STRUCT__entry( + __field(void *, func) + ), + + TP_fast_assign( + __entry->func = t->func; + ), + + TP_printk("func=%pf", __entry->func) +); + +/** + * tlet_exit - called immediately after the tasklet handler returns + * @t: pointer to struct tasklet_struct + * + * When used in combination with the tasklet_entry tracepoint we can + * determine the latency of the tasklet. + */ +TRACE_EVENT(tlet_exit, + + TP_PROTO(struct tasklet_struct *t), + + TP_ARGS(t), + + TP_STRUCT__entry( + __field(void *, func) + ), + + TP_fast_assign( + __entry->func = t->func; + ), + + TP_printk("func=%pf", __entry->func) +); + DECLARE_EVENT_CLASS(softirq, TP_PROTO(unsigned int vec_nr),