diff options
| author | Ingo Molnar <mingo@elte.hu> | 2010-12-22 06:46:12 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2010-12-22 11:12:08 -0500 |
| commit | 9fb67204d7a00a6444bc121f221527034613d338 (patch) | |
| tree | 1f8e9715955a41577a2ee14be922683f93aa0e12 /kernel/trace | |
| parent | 8c1df4002aa425973d7d25ffa56c042acd953bed (diff) | |
| parent | 287050d390264402e11bea8b811859e42e8faa29 (diff) | |
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/trace_events.c | 6 | ||||
| -rw-r--r-- | kernel/trace/trace_export.c | 14 |
2 files changed, 16 insertions, 4 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 0725eeab1937..35fde09b81de 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
| @@ -27,6 +27,12 @@ | |||
| 27 | 27 | ||
| 28 | DEFINE_MUTEX(event_mutex); | 28 | DEFINE_MUTEX(event_mutex); |
| 29 | 29 | ||
| 30 | DEFINE_MUTEX(event_storage_mutex); | ||
| 31 | EXPORT_SYMBOL_GPL(event_storage_mutex); | ||
| 32 | |||
| 33 | char event_storage[EVENT_STORAGE_SIZE]; | ||
| 34 | EXPORT_SYMBOL_GPL(event_storage); | ||
| 35 | |||
| 30 | LIST_HEAD(ftrace_events); | 36 | LIST_HEAD(ftrace_events); |
| 31 | LIST_HEAD(ftrace_common_fields); | 37 | LIST_HEAD(ftrace_common_fields); |
| 32 | 38 | ||
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index 4ba44deaac25..4b74d71705c0 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
| @@ -83,13 +83,19 @@ static void __always_unused ____ftrace_check_##name(void) \ | |||
| 83 | 83 | ||
| 84 | #undef __array | 84 | #undef __array |
| 85 | #define __array(type, item, len) \ | 85 | #define __array(type, item, len) \ |
| 86 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ | 86 | do { \ |
| 87 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ | 87 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ |
| 88 | mutex_lock(&event_storage_mutex); \ | ||
| 89 | snprintf(event_storage, sizeof(event_storage), \ | ||
| 90 | "%s[%d]", #type, len); \ | ||
| 91 | ret = trace_define_field(event_call, event_storage, #item, \ | ||
| 88 | offsetof(typeof(field), item), \ | 92 | offsetof(typeof(field), item), \ |
| 89 | sizeof(field.item), \ | 93 | sizeof(field.item), \ |
| 90 | is_signed_type(type), FILTER_OTHER); \ | 94 | is_signed_type(type), FILTER_OTHER); \ |
| 91 | if (ret) \ | 95 | mutex_unlock(&event_storage_mutex); \ |
| 92 | return ret; | 96 | if (ret) \ |
| 97 | return ret; \ | ||
| 98 | } while (0); | ||
| 93 | 99 | ||
| 94 | #undef __array_desc | 100 | #undef __array_desc |
| 95 | #define __array_desc(type, container, item, len) \ | 101 | #define __array_desc(type, container, item, len) \ |
