brintos

brintos / linux-shallow public Read only

0
0
Text · 3.0 KiB · b0de2bc Raw
133 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM workqueue4 5#if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_WORKQUEUE_H7 8#include <linux/tracepoint.h>9#include <linux/workqueue.h>10 11struct pool_workqueue;12 13/**14 * workqueue_queue_work - called when a work gets queued15 * @req_cpu:	the requested cpu16 * @pwq:	pointer to struct pool_workqueue17 * @work:	pointer to struct work_struct18 *19 * This event occurs when a work is queued immediately or once a20 * delayed work is actually queued on a workqueue (ie: once the delay21 * has been reached).22 */23TRACE_EVENT(workqueue_queue_work,24 25	TP_PROTO(int req_cpu, struct pool_workqueue *pwq,26		 struct work_struct *work),27 28	TP_ARGS(req_cpu, pwq, work),29 30	TP_STRUCT__entry(31		__field( void *,	work	)32		__field( void *,	function)33		__string( workqueue,	pwq->wq->name)34		__field( int,	req_cpu	)35		__field( int,	cpu	)36	),37 38	TP_fast_assign(39		__entry->work		= work;40		__entry->function	= work->func;41		__assign_str(workqueue);42		__entry->req_cpu	= req_cpu;43		__entry->cpu		= pwq->pool->cpu;44	),45 46	TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%d cpu=%d",47		  __entry->work, __entry->function, __get_str(workqueue),48		  __entry->req_cpu, __entry->cpu)49);50 51/**52 * workqueue_activate_work - called when a work gets activated53 * @work:	pointer to struct work_struct54 *55 * This event occurs when a queued work is put on the active queue,56 * which happens immediately after queueing unless @max_active limit57 * is reached.58 */59TRACE_EVENT(workqueue_activate_work,60 61	TP_PROTO(struct work_struct *work),62 63	TP_ARGS(work),64 65	TP_STRUCT__entry(66		__field( void *,	work	)67		__field( void *,	function)68	),69 70	TP_fast_assign(71		__entry->work		= work;72		__entry->function	= work->func;73	),74 75	TP_printk("work struct %p function=%ps ", __entry->work, __entry->function)76);77 78/**79 * workqueue_execute_start - called immediately before the workqueue callback80 * @work:	pointer to struct work_struct81 *82 * Allows to track workqueue execution.83 */84TRACE_EVENT(workqueue_execute_start,85 86	TP_PROTO(struct work_struct *work),87 88	TP_ARGS(work),89 90	TP_STRUCT__entry(91		__field( void *,	work	)92		__field( void *,	function)93	),94 95	TP_fast_assign(96		__entry->work		= work;97		__entry->function	= work->func;98	),99 100	TP_printk("work struct %p: function %ps", __entry->work, __entry->function)101);102 103/**104 * workqueue_execute_end - called immediately after the workqueue callback105 * @work:	pointer to struct work_struct106 * @function:   pointer to worker function107 *108 * Allows to track workqueue execution.109 */110TRACE_EVENT(workqueue_execute_end,111 112	TP_PROTO(struct work_struct *work, work_func_t function),113 114	TP_ARGS(work, function),115 116	TP_STRUCT__entry(117		__field( void *,	work	)118		__field( void *,	function)119	),120 121	TP_fast_assign(122		__entry->work		= work;123		__entry->function	= function;124	),125 126	TP_printk("work struct %p: function %ps", __entry->work, __entry->function)127);128 129#endif /*  _TRACE_WORKQUEUE_H */130 131/* This part must be outside protection */132#include <trace/define_trace.h>133