- patches.suse/slab-handle-memoryless-nodes-v2a.patch: Refresh.
[linux-flexiantxendom0-3.2.10.git] / include / trace / events / workqueue.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM workqueue
3
4 #if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_WORKQUEUE_H
6
7 #include <linux/workqueue.h>
8 #include <linux/sched.h>
9 #include <linux/tracepoint.h>
10
11 DECLARE_EVENT_CLASS(workqueue,
12
13         TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
14
15         TP_ARGS(wq_thread, work),
16
17         TP_STRUCT__entry(
18                 __array(char,           thread_comm,    TASK_COMM_LEN)
19                 __field(pid_t,          thread_pid)
20                 __field(work_func_t,    func)
21         ),
22
23         TP_fast_assign(
24                 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
25                 __entry->thread_pid     = wq_thread->pid;
26                 __entry->func           = work->func;
27         ),
28
29         TP_printk("thread=%s:%d func=%pf", __entry->thread_comm,
30                 __entry->thread_pid, __entry->func)
31 );
32
33 DEFINE_EVENT(workqueue, workqueue_insertion,
34
35         TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
36
37         TP_ARGS(wq_thread, work)
38 );
39
40 DEFINE_EVENT(workqueue, workqueue_execution,
41
42         TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
43
44         TP_ARGS(wq_thread, work)
45 );
46
47 /* Trace the creation of one workqueue thread on a cpu */
48 TRACE_EVENT(workqueue_creation,
49
50         TP_PROTO(struct task_struct *wq_thread, int cpu),
51
52         TP_ARGS(wq_thread, cpu),
53
54         TP_STRUCT__entry(
55                 __array(char,   thread_comm,    TASK_COMM_LEN)
56                 __field(pid_t,  thread_pid)
57                 __field(int,    cpu)
58         ),
59
60         TP_fast_assign(
61                 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
62                 __entry->thread_pid     = wq_thread->pid;
63                 __entry->cpu            = cpu;
64         ),
65
66         TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm,
67                 __entry->thread_pid, __entry->cpu)
68 );
69
70 TRACE_EVENT(workqueue_destruction,
71
72         TP_PROTO(struct task_struct *wq_thread),
73
74         TP_ARGS(wq_thread),
75
76         TP_STRUCT__entry(
77                 __array(char,   thread_comm,    TASK_COMM_LEN)
78                 __field(pid_t,  thread_pid)
79         ),
80
81         TP_fast_assign(
82                 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
83                 __entry->thread_pid     = wq_thread->pid;
84         ),
85
86         TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid)
87 );
88
89 #endif /* _TRACE_WORKQUEUE_H */
90
91 /* This part must be outside protection */
92 #include <trace/define_trace.h>