diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 18:23:47 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 18:23:47 -0400 |
| commit | c5617b200ac52e35f7e8cf05a17b0a2d50f6b3e9 (patch) | |
| tree | 40d5e99660c77c5791392d349a93113c044dbf14 /kernel/trace/trace_workqueue.c | |
| parent | cad719d86e9dbd06634eaba6401e022c8101d6b2 (diff) | |
| parent | 49c177461bfbedeccbab22bf3905db2f9da7f1c3 (diff) | |
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (61 commits)
tracing: Add __used annotation to event variable
perf, trace: Fix !x86 build bug
perf report: Support multiple events on the TUI
perf annotate: Fix up usage of the build id cache
x86/mmiotrace: Remove redundant instruction prefix checks
perf annotate: Add TUI interface
perf tui: Remove annotate from popup menu after failure
perf report: Don't start the TUI if -D is used
perf: Fix getline undeclared
perf: Optimize perf_tp_event_match()
perf: Remove more code from the fastpath
perf: Optimize the !vmalloc backed buffer
perf: Optimize perf_output_copy()
perf: Fix wakeup storm for RO mmap()s
perf-record: Share per-cpu buffers
perf-record: Remove -M
perf: Ensure that IOC_OUTPUT isn't used to create multi-writer buffers
perf, trace: Optimize tracepoints by using per-tracepoint-per-cpu hlist to track events
perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint interaction
perf tui: Allow disabling the TUI on a per command basis in ~/.perfconfig
...
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 | ||
