diff options
Diffstat (limited to 'kernel/trace/trace_workqueue.c')
| -rw-r--r-- | kernel/trace/trace_workqueue.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/kernel/trace/trace_workqueue.c b/kernel/trace/trace_workqueue.c index cc2d2faa7d9e..a7cc3793baf6 100644 --- a/kernel/trace/trace_workqueue.c +++ b/kernel/trace/trace_workqueue.c | |||
| @@ -49,7 +49,8 @@ static void cpu_workqueue_stat_free(struct kref *kref) | |||
| 49 | 49 | ||
| 50 | /* Insertion of a work */ | 50 | /* Insertion of a work */ |
| 51 | static void | 51 | static void |
| 52 | probe_workqueue_insertion(struct task_struct *wq_thread, | 52 | probe_workqueue_insertion(void *ignore, |
| 53 | struct task_struct *wq_thread, | ||
| 53 | struct work_struct *work) | 54 | struct work_struct *work) |
| 54 | { | 55 | { |
| 55 | int cpu = cpumask_first(&wq_thread->cpus_allowed); | 56 | int cpu = cpumask_first(&wq_thread->cpus_allowed); |
| @@ -70,7 +71,8 @@ found: | |||
| 70 | 71 | ||
| 71 | /* Execution of a work */ | 72 | /* Execution of a work */ |
| 72 | static void | 73 | static void |
| 73 | probe_workqueue_execution(struct task_struct *wq_thread, | 74 | probe_workqueue_execution(void *ignore, |
| 75 | struct task_struct *wq_thread, | ||
| 74 | struct work_struct *work) | 76 | struct work_struct *work) |
| 75 | { | 77 | { |
| 76 | int cpu = cpumask_first(&wq_thread->cpus_allowed); | 78 | int cpu = cpumask_first(&wq_thread->cpus_allowed); |
| @@ -90,7 +92,8 @@ found: | |||
| 90 | } | 92 | } |
| 91 | 93 | ||
| 92 | /* Creation of a cpu workqueue thread */ | 94 | /* Creation of a cpu workqueue thread */ |
| 93 | static void probe_workqueue_creation(struct task_struct *wq_thread, int cpu) | 95 | static void probe_workqueue_creation(void *ignore, |
| 96 | struct task_struct *wq_thread, int cpu) | ||
| 94 | { | 97 | { |
| 95 | struct cpu_workqueue_stats *cws; | 98 | struct cpu_workqueue_stats *cws; |
| 96 | unsigned long flags; | 99 | unsigned long flags; |
| @@ -114,7 +117,8 @@ static void probe_workqueue_creation(struct task_struct *wq_thread, int cpu) | |||
| 114 | } | 117 | } |
| 115 | 118 | ||
| 116 | /* Destruction of a cpu workqueue thread */ | 119 | /* Destruction of a cpu workqueue thread */ |
| 117 | static void probe_workqueue_destruction(struct task_struct *wq_thread) | 120 | static void |
| 121 | probe_workqueue_destruction(void *ignore, struct task_struct *wq_thread) | ||
| 118 | { | 122 | { |
| 119 | /* Workqueue only execute on one cpu */ | 123 | /* Workqueue only execute on one cpu */ |
| 120 | int cpu = cpumask_first(&wq_thread->cpus_allowed); | 124 | int cpu = cpumask_first(&wq_thread->cpus_allowed); |
| @@ -259,19 +263,19 @@ int __init trace_workqueue_early_init(void) | |||
| 259 | { | 263 | { |
| 260 | int ret, cpu; | 264 | int ret, cpu; |
| 261 | 265 | ||
| 262 | ret = register_trace_workqueue_insertion(probe_workqueue_insertion); | 266 | ret = register_trace_workqueue_insertion(probe_workqueue_insertion, NULL); |
| 263 | if (ret) | 267 | if (ret) |
| 264 | goto out; | 268 | goto out; |
| 265 | 269 | ||
| 266 | ret = register_trace_workqueue_execution(probe_workqueue_execution); | 270 | ret = register_trace_workqueue_execution(probe_workqueue_execution, NULL); |
| 267 | if (ret) | 271 | if (ret) |
| 268 | goto no_insertion; | 272 | goto no_insertion; |
| 269 | 273 | ||
| 270 | ret = register_trace_workqueue_creation(probe_workqueue_creation); | 274 | ret = register_trace_workqueue_creation(probe_workqueue_creation, NULL); |
| 271 | if (ret) | 275 | if (ret) |
| 272 | goto no_execution; | 276 | goto no_execution; |
| 273 | 277 | ||
| 274 | ret = register_trace_workqueue_destruction(probe_workqueue_destruction); | 278 | ret = register_trace_workqueue_destruction(probe_workqueue_destruction, NULL); |
| 275 | if (ret) | 279 | if (ret) |
| 276 | goto no_creation; | 280 | goto no_creation; |
| 277 | 281 | ||
| @@ -283,11 +287,11 @@ int __init trace_workqueue_early_init(void) | |||
| 283 | return 0; | 287 | return 0; |
| 284 | 288 | ||
| 285 | no_creation: | 289 | no_creation: |
| 286 | unregister_trace_workqueue_creation(probe_workqueue_creation); | 290 | unregister_trace_workqueue_creation(probe_workqueue_creation, NULL); |
| 287 | no_execution: | 291 | no_execution: |
| 288 | unregister_trace_workqueue_execution(probe_workqueue_execution); | 292 | unregister_trace_workqueue_execution(probe_workqueue_execution, NULL); |
| 289 | no_insertion: | 293 | no_insertion: |
| 290 | unregister_trace_workqueue_insertion(probe_workqueue_insertion); | 294 | unregister_trace_workqueue_insertion(probe_workqueue_insertion, NULL); |
| 291 | out: | 295 | out: |
| 292 | pr_warning("trace_workqueue: unable to trace workqueues\n"); | 296 | pr_warning("trace_workqueue: unable to trace workqueues\n"); |
| 293 | 297 | ||
