X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Fworkqueue.h;h=8ca0d6bf7a46ae3a43fc213726523d1c320e1b43;hb=3b4aafcbbef722c5d04f2fe06a47c47d4d23eda0;hp=759a783d4ed4dca62e43b277cc20c8ec1e91eb74;hpb=6ec43db836429730c1431809049197a4fbe820fa;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/workqueue.h b/instrumentation/events/lttng-module/workqueue.h index 759a783d..8ca0d6bf 100644 --- a/instrumentation/events/lttng-module/workqueue.h +++ b/instrumentation/events/lttng-module/workqueue.h @@ -1,15 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ #undef TRACE_SYSTEM #define TRACE_SYSTEM workqueue #if !defined(LTTNG_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ) #define LTTNG_TRACE_WORKQUEUE_H -#include +#include #include #include -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) - #ifndef _TRACE_WORKQUEUE_DEF_ #define _TRACE_WORKQUEUE_DEF_ @@ -29,7 +28,6 @@ LTTNG_TRACEPOINT_EVENT_CLASS(workqueue_work, ) ) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) /** * workqueue_queue_work - called when a work gets queued * @req_cpu: the requested cpu @@ -75,7 +73,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue_work, workqueue_activate_work, TP_ARGS(work) ) -#endif /** * workqueue_execute_start - called immediately before the workqueue callback @@ -95,77 +92,41 @@ LTTNG_TRACEPOINT_EVENT(workqueue_execute_start, ) ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)) /** * workqueue_execute_end - called immediately after the workqueue callback * @work: pointer to struct work_struct + * @function: pointer to worker function * * Allows to track workqueue execution. */ -LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue_work, workqueue_execute_end, - - TP_PROTO(struct work_struct *work), - - TP_ARGS(work) -) - -#else - -LTTNG_TRACEPOINT_EVENT_CLASS(workqueue, - - TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), - - TP_ARGS(wq_thread, work), - - TP_FIELDS( - ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN) - ctf_integer(pid_t, thread_pid, wq_thread->pid) - ctf_integer_hex(work_func_t, func, work->func) - ) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue, workqueue_insertion, - - TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), - - TP_ARGS(wq_thread, work) -) +LTTNG_TRACEPOINT_EVENT(workqueue_execute_end, -LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue, workqueue_execution, + TP_PROTO(struct work_struct *work, work_func_t function), - TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), - - TP_ARGS(wq_thread, work) -) - -/* Trace the creation of one workqueue thread on a cpu */ -LTTNG_TRACEPOINT_EVENT(workqueue_creation, - - TP_PROTO(struct task_struct *wq_thread, int cpu), - - TP_ARGS(wq_thread, cpu), + TP_ARGS(work, function), TP_FIELDS( - ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN) - ctf_integer(pid_t, thread_pid, wq_thread->pid) - ctf_integer(int, cpu, cpu) + ctf_integer_hex(void *, work, work) + ctf_integer_hex(void *, function, function) ) ) +#else +/** + * workqueue_execute_end - called immediately after the workqueue callback + * @work: pointer to struct work_struct + * + * Allows to track workqueue execution. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue_work, workqueue_execute_end, -LTTNG_TRACEPOINT_EVENT(workqueue_destruction, - - TP_PROTO(struct task_struct *wq_thread), - - TP_ARGS(wq_thread), + TP_PROTO(struct work_struct *work), - TP_FIELDS( - ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN) - ctf_integer(pid_t, thread_pid, wq_thread->pid) - ) + TP_ARGS(work) ) - #endif #endif /* LTTNG_TRACE_WORKQUEUE_H */ /* This part must be outside protection */ -#include +#include