Re: [PATCH v2] workqueue: add function in event of workqueue_activate_work
on 2024/3/8 10:23, Steven Rostedt wrote: On Fri, 8 Mar 2024 10:18:18 +0800 Kassey Li wrote: The trace event "workqueue_activate_work" only print work struct. However, function is the region of interest in a full sequence of work. Current workqueue_activate_work trace event output: workqueue_activate_work: work struct ff88b4a0f450 With this change, workqueue_activate_work will print the function name, align with workqueue_queue_work/execute_start/execute_end event. workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update Signed-off-by: Kassey Li --- Changelog: v1: https://lore.kernel.org/all/20240308010929.1955339-1-quic_yinga...@quicinc.com/ v1->v2: - do not follow checkpatch in TRACE_EVENT() macros - add sample "workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update" From a tracing POV, Reviewed-by: Steven Rostedt (Google) -- Steve hello, Tejun, may you have a chance to review this change ? --- include/trace/events/workqueue.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h index 262d52021c23..6ef5b7254070 100644 --- a/include/trace/events/workqueue.h +++ b/include/trace/events/workqueue.h @@ -64,13 +64,15 @@ TRACE_EVENT(workqueue_activate_work, TP_STRUCT__entry( __field( void *,work) + __field( void *,function) ), TP_fast_assign( __entry->work= work; + __entry->function= work->func; ), - TP_printk("work struct %p", __entry->work) + TP_printk("work struct %p function=%ps ", __entry->work, __entry->function) ); /**
Re: [PATCH v2] workqueue: add function in event of workqueue_activate_work
On 2024/3/8 10:23, Steven Rostedt wrote: On Fri, 8 Mar 2024 10:18:18 +0800 Kassey Li wrote: The trace event "workqueue_activate_work" only print work struct. However, function is the region of interest in a full sequence of work. Current workqueue_activate_work trace event output: workqueue_activate_work: work struct ff88b4a0f450 With this change, workqueue_activate_work will print the function name, align with workqueue_queue_work/execute_start/execute_end event. workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update Signed-off-by: Kassey Li --- Changelog: v1: https://lore.kernel.org/all/20240308010929.1955339-1-quic_yinga...@quicinc.com/ v1->v2: - do not follow checkpatch in TRACE_EVENT() macros - add sample "workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update" From a tracing POV, Reviewed-by: Steven Rostedt (Google) -- Steve thank you Steve. add Tejun to review this change. --- include/trace/events/workqueue.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h index 262d52021c23..6ef5b7254070 100644 --- a/include/trace/events/workqueue.h +++ b/include/trace/events/workqueue.h @@ -64,13 +64,15 @@ TRACE_EVENT(workqueue_activate_work, TP_STRUCT__entry( __field( void *,work) + __field( void *,function) ), TP_fast_assign( __entry->work= work; + __entry->function= work->func; ), - TP_printk("work struct %p", __entry->work) + TP_printk("work struct %p function=%ps ", __entry->work, __entry->function) ); /**
Re: [PATCH] workqueue: add function in event of workqueue_activate_work
On 2024/3/8 9:50, Steven Rostedt wrote: On Fri, 8 Mar 2024 09:09:29 +0800 Kassey Li wrote: The trace event "workqueue_activate_work" only print work struct. However, function is the region of interest in a full sequence of work. Current workqueue_activate_work trace event output: workqueue_activate_work: work struct ff88b4a0f450 With this change, workqueue_activate_work will print the function name, align with workqueue_queue_work/execute_start/execute_end event. checkpatch.pl will report below error for the space: ERROR: space prohibited after that open parenthesis '(' #28: FILE: include/trace/events/workqueue.h:67: + __field( void *,function) total: 1 errors, 0 warnings, 16 lines checked fix this error. Signed-off-by: Kassey Li --- include/trace/events/workqueue.h | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h index 262d52021c23..a42c1a293459 100644 --- a/include/trace/events/workqueue.h +++ b/include/trace/events/workqueue.h @@ -63,14 +63,16 @@ TRACE_EVENT(workqueue_activate_work, TP_ARGS(work), TP_STRUCT__entry( - __field( void *,work) + __field(void *, work) + __field(void *, function) Note, please do not follow checkpatch in TRACE_EVENT() macros. It simply doesn't understand it. The above is supposed to be similar to structure formatting. ie: struct __entry { void*work; void*function; }; TP_STRUCT__entry( __field( void *,work) __field( void *,function) ), That looks much better. -- Steve thanks for the remind. send out the v2 as your suggest: https://lore.kernel.org/all/20240308021818.2306176-1-quic_yinga...@quicinc.com/ TP_fast_assign( __entry->work= work; + __entry->function= work->func; ), - TP_printk("work struct %p", __entry->work) + TP_printk("work struct %p function=%ps ", __entry->work, __entry->function) ); /**
[PATCH v2] workqueue: add function in event of workqueue_activate_work
The trace event "workqueue_activate_work" only print work struct. However, function is the region of interest in a full sequence of work. Current workqueue_activate_work trace event output: workqueue_activate_work: work struct ff88b4a0f450 With this change, workqueue_activate_work will print the function name, align with workqueue_queue_work/execute_start/execute_end event. workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update Signed-off-by: Kassey Li --- Changelog: v1: https://lore.kernel.org/all/20240308010929.1955339-1-quic_yinga...@quicinc.com/ v1->v2: - do not follow checkpatch in TRACE_EVENT() macros - add sample "workqueue_activate_work: work struct ff80413a78b8 function=vmstat_update" --- include/trace/events/workqueue.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h index 262d52021c23..6ef5b7254070 100644 --- a/include/trace/events/workqueue.h +++ b/include/trace/events/workqueue.h @@ -64,13 +64,15 @@ TRACE_EVENT(workqueue_activate_work, TP_STRUCT__entry( __field( void *,work) + __field( void *,function) ), TP_fast_assign( __entry->work = work; + __entry->function = work->func; ), - TP_printk("work struct %p", __entry->work) + TP_printk("work struct %p function=%ps ", __entry->work, __entry->function) ); /** -- 2.25.1
[PATCH] workqueue: add function in event of workqueue_activate_work
The trace event "workqueue_activate_work" only print work struct. However, function is the region of interest in a full sequence of work. Current workqueue_activate_work trace event output: workqueue_activate_work: work struct ff88b4a0f450 With this change, workqueue_activate_work will print the function name, align with workqueue_queue_work/execute_start/execute_end event. checkpatch.pl will report below error for the space: ERROR: space prohibited after that open parenthesis '(' #28: FILE: include/trace/events/workqueue.h:67: + __field( void *,function) total: 1 errors, 0 warnings, 16 lines checked fix this error. Signed-off-by: Kassey Li --- include/trace/events/workqueue.h | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h index 262d52021c23..a42c1a293459 100644 --- a/include/trace/events/workqueue.h +++ b/include/trace/events/workqueue.h @@ -63,14 +63,16 @@ TRACE_EVENT(workqueue_activate_work, TP_ARGS(work), TP_STRUCT__entry( - __field( void *,work) + __field(void *, work) + __field(void *, function) ), TP_fast_assign( __entry->work = work; + __entry->function = work->func; ), - TP_printk("work struct %p", __entry->work) + TP_printk("work struct %p function=%ps ", __entry->work, __entry->function) ); /** -- 2.25.1