aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 15:02:25 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 15:02:25 -0500
commitda184a8064efe2a78d8542877970f7c6bb62775a (patch)
treed10193bb583f60333e243fe46386cab31f591e0c /include
parent525995d77ca08dfc2ba6f8e606f93694271dbd66 (diff)
parente36c54582c6f14adc9e10473e2aec2cc4f0acc03 (diff)
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: tracing: Fix return of trace_dump_stack() ksym_tracer: Fix bad cast tracing/power: Remove two exports tracing: Change event->profile_count to be int type tracing: Simplify trace_option_write() tracing: Remove useless trace option tracing: Use seq file for trace_clock tracing: Use seq file for trace_options function-graph: Allow writing the same val to set_graph_function ftrace: Call trace_parser_clear() properly ftrace: Return EINVAL when writing invalid val to set_ftrace_filter tracing: Move a printk out of ftrace_raw_reg_event_foo() tracing: Pull up calls to trace_define_common_fields() tracing: Extract duplicate ftrace_raw_init_event_foo() ftrace.h: Use common pr_info fmt string tracing: Add stack trace to irqsoff tracer tracing: Add trace_dump_stack() ring-buffer: Move resize integrity check under reader lock ring-buffer: Use sync sched protection on ring buffer resizing tracing: Fix wrong usage of strstrip in trace_ksyms
Diffstat (limited to 'include')
-rw-r--r--include/linux/ftrace_event.h4
-rw-r--r--include/linux/kernel.h3
-rw-r--r--include/linux/syscalls.h6
-rw-r--r--include/trace/ftrace.h56
4 files changed, 13 insertions, 56 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 38f8d6553831..2233c98d80df 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -131,7 +131,7 @@ struct ftrace_event_call {
131 void *mod; 131 void *mod;
132 void *data; 132 void *data;
133 133
134 atomic_t profile_count; 134 int profile_count;
135 int (*profile_enable)(struct ftrace_event_call *); 135 int (*profile_enable)(struct ftrace_event_call *);
136 void (*profile_disable)(struct ftrace_event_call *); 136 void (*profile_disable)(struct ftrace_event_call *);
137}; 137};
@@ -158,7 +158,7 @@ enum {
158 FILTER_PTR_STRING, 158 FILTER_PTR_STRING,
159}; 159};
160 160
161extern int trace_define_common_fields(struct ftrace_event_call *call); 161extern int trace_event_raw_init(struct ftrace_event_call *call);
162extern int trace_define_field(struct ftrace_event_call *call, const char *type, 162extern int trace_define_field(struct ftrace_event_call *call, const char *type,
163 const char *name, int offset, int size, 163 const char *name, int offset, int size,
164 int is_signed, int filter_type); 164 int is_signed, int filter_type);
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 4d9c916d06d9..3fc9f5aab5f8 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -535,6 +535,8 @@ extern int
535__trace_printk(unsigned long ip, const char *fmt, ...) 535__trace_printk(unsigned long ip, const char *fmt, ...)
536 __attribute__ ((format (printf, 2, 3))); 536 __attribute__ ((format (printf, 2, 3)));
537 537
538extern void trace_dump_stack(void);
539
538/* 540/*
539 * The double __builtin_constant_p is because gcc will give us an error 541 * The double __builtin_constant_p is because gcc will give us an error
540 * if we try to allocate the static variable to fmt if it is not a 542 * if we try to allocate the static variable to fmt if it is not a
@@ -568,6 +570,7 @@ trace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
568static inline void tracing_start(void) { } 570static inline void tracing_start(void) { }
569static inline void tracing_stop(void) { } 571static inline void tracing_stop(void) { }
570static inline void ftrace_off_permanent(void) { } 572static inline void ftrace_off_permanent(void) { }
573static inline void trace_dump_stack(void) { }
571static inline int 574static inline int
572trace_printk(const char *fmt, ...) 575trace_printk(const char *fmt, ...)
573{ 576{
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 939a61507ac5..65793e90d6f6 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -102,12 +102,10 @@ struct perf_event_attr;
102#ifdef CONFIG_EVENT_PROFILE 102#ifdef CONFIG_EVENT_PROFILE
103 103
104#define TRACE_SYS_ENTER_PROFILE_INIT(sname) \ 104#define TRACE_SYS_ENTER_PROFILE_INIT(sname) \
105 .profile_count = ATOMIC_INIT(-1), \
106 .profile_enable = prof_sysenter_enable, \ 105 .profile_enable = prof_sysenter_enable, \
107 .profile_disable = prof_sysenter_disable, 106 .profile_disable = prof_sysenter_disable,
108 107
109#define TRACE_SYS_EXIT_PROFILE_INIT(sname) \ 108#define TRACE_SYS_EXIT_PROFILE_INIT(sname) \
110 .profile_count = ATOMIC_INIT(-1), \
111 .profile_enable = prof_sysexit_enable, \ 109 .profile_enable = prof_sysexit_enable, \
112 .profile_disable = prof_sysexit_disable, 110 .profile_disable = prof_sysexit_disable,
113#else 111#else
@@ -145,7 +143,7 @@ struct perf_event_attr;
145 .name = "sys_enter"#sname, \ 143 .name = "sys_enter"#sname, \
146 .system = "syscalls", \ 144 .system = "syscalls", \
147 .event = &enter_syscall_print_##sname, \ 145 .event = &enter_syscall_print_##sname, \
148 .raw_init = init_syscall_trace, \ 146 .raw_init = trace_event_raw_init, \
149 .show_format = syscall_enter_format, \ 147 .show_format = syscall_enter_format, \
150 .define_fields = syscall_enter_define_fields, \ 148 .define_fields = syscall_enter_define_fields, \
151 .regfunc = reg_event_syscall_enter, \ 149 .regfunc = reg_event_syscall_enter, \
@@ -167,7 +165,7 @@ struct perf_event_attr;
167 .name = "sys_exit"#sname, \ 165 .name = "sys_exit"#sname, \
168 .system = "syscalls", \ 166 .system = "syscalls", \
169 .event = &exit_syscall_print_##sname, \ 167 .event = &exit_syscall_print_##sname, \
170 .raw_init = init_syscall_trace, \ 168 .raw_init = trace_event_raw_init, \
171 .show_format = syscall_exit_format, \ 169 .show_format = syscall_exit_format, \
172 .define_fields = syscall_exit_define_fields, \ 170 .define_fields = syscall_exit_define_fields, \
173 .regfunc = reg_event_syscall_exit, \ 171 .regfunc = reg_event_syscall_exit, \
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index d1b3de9c1a71..73523151a731 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -436,10 +436,6 @@ ftrace_define_fields_##call(struct ftrace_event_call *event_call) \
436 struct ftrace_raw_##call field; \ 436 struct ftrace_raw_##call field; \
437 int ret; \ 437 int ret; \
438 \ 438 \
439 ret = trace_define_common_fields(event_call); \
440 if (ret) \
441 return ret; \
442 \
443 tstruct; \ 439 tstruct; \
444 \ 440 \
445 return ret; \ 441 return ret; \
@@ -559,13 +555,7 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\
559 * 555 *
560 * static int ftrace_reg_event_<call>(struct ftrace_event_call *unused) 556 * static int ftrace_reg_event_<call>(struct ftrace_event_call *unused)
561 * { 557 * {
562 * int ret; 558 * return register_trace_<call>(ftrace_event_<call>);
563 *
564 * ret = register_trace_<call>(ftrace_event_<call>);
565 * if (!ret)
566 * pr_info("event trace: Could not activate trace point "
567 * "probe to <call>");
568 * return ret;
569 * } 559 * }
570 * 560 *
571 * static void ftrace_unreg_event_<call>(struct ftrace_event_call *unused) 561 * static void ftrace_unreg_event_<call>(struct ftrace_event_call *unused)
@@ -623,23 +613,12 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\
623 * .trace = ftrace_raw_output_<call>, <-- stage 2 613 * .trace = ftrace_raw_output_<call>, <-- stage 2
624 * }; 614 * };
625 * 615 *
626 * static int ftrace_raw_init_event_<call>(struct ftrace_event_call *unused)
627 * {
628 * int id;
629 *
630 * id = register_ftrace_event(&ftrace_event_type_<call>);
631 * if (!id)
632 * return -ENODEV;
633 * event_<call>.id = id;
634 * return 0;
635 * }
636 *
637 * static struct ftrace_event_call __used 616 * static struct ftrace_event_call __used
638 * __attribute__((__aligned__(4))) 617 * __attribute__((__aligned__(4)))
639 * __attribute__((section("_ftrace_events"))) event_<call> = { 618 * __attribute__((section("_ftrace_events"))) event_<call> = {
640 * .name = "<call>", 619 * .name = "<call>",
641 * .system = "<system>", 620 * .system = "<system>",
642 * .raw_init = ftrace_raw_init_event_<call>, 621 * .raw_init = trace_event_raw_init,
643 * .regfunc = ftrace_reg_event_<call>, 622 * .regfunc = ftrace_reg_event_<call>,
644 * .unregfunc = ftrace_unreg_event_<call>, 623 * .unregfunc = ftrace_unreg_event_<call>,
645 * .show_format = ftrace_format_<call>, 624 * .show_format = ftrace_format_<call>,
@@ -647,13 +626,9 @@ static void ftrace_profile_disable_##name(struct ftrace_event_call *unused)\
647 * 626 *
648 */ 627 */
649 628
650#undef TP_FMT
651#define TP_FMT(fmt, args...) fmt "\n", ##args
652
653#ifdef CONFIG_EVENT_PROFILE 629#ifdef CONFIG_EVENT_PROFILE
654 630
655#define _TRACE_PROFILE_INIT(call) \ 631#define _TRACE_PROFILE_INIT(call) \
656 .profile_count = ATOMIC_INIT(-1), \
657 .profile_enable = ftrace_profile_enable_##call, \ 632 .profile_enable = ftrace_profile_enable_##call, \
658 .profile_disable = ftrace_profile_disable_##call, 633 .profile_disable = ftrace_profile_disable_##call,
659 634
@@ -728,13 +703,7 @@ static void ftrace_raw_event_##call(proto) \
728 \ 703 \
729static int ftrace_raw_reg_event_##call(struct ftrace_event_call *unused)\ 704static int ftrace_raw_reg_event_##call(struct ftrace_event_call *unused)\
730{ \ 705{ \
731 int ret; \ 706 return register_trace_##call(ftrace_raw_event_##call); \
732 \
733 ret = register_trace_##call(ftrace_raw_event_##call); \
734 if (ret) \
735 pr_info("event trace: Could not activate trace point " \
736 "probe to " #call "\n"); \
737 return ret; \
738} \ 707} \
739 \ 708 \
740static void ftrace_raw_unreg_event_##call(struct ftrace_event_call *unused)\ 709static void ftrace_raw_unreg_event_##call(struct ftrace_event_call *unused)\
@@ -744,19 +713,7 @@ static void ftrace_raw_unreg_event_##call(struct ftrace_event_call *unused)\
744 \ 713 \
745static struct trace_event ftrace_event_type_##call = { \ 714static struct trace_event ftrace_event_type_##call = { \
746 .trace = ftrace_raw_output_##call, \ 715 .trace = ftrace_raw_output_##call, \
747}; \ 716};
748 \
749static int ftrace_raw_init_event_##call(struct ftrace_event_call *unused)\
750{ \
751 int id; \
752 \
753 id = register_ftrace_event(&ftrace_event_type_##call); \
754 if (!id) \
755 return -ENODEV; \
756 event_##call.id = id; \
757 INIT_LIST_HEAD(&event_##call.fields); \
758 return 0; \
759}
760 717
761#undef DEFINE_EVENT_PRINT 718#undef DEFINE_EVENT_PRINT
762#define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ 719#define DEFINE_EVENT_PRINT(template, name, proto, args, print) \
@@ -776,7 +733,7 @@ __attribute__((section("_ftrace_events"))) event_##call = { \
776 .name = #call, \ 733 .name = #call, \
777 .system = __stringify(TRACE_SYSTEM), \ 734 .system = __stringify(TRACE_SYSTEM), \
778 .event = &ftrace_event_type_##call, \ 735 .event = &ftrace_event_type_##call, \
779 .raw_init = ftrace_raw_init_event_##call, \ 736 .raw_init = trace_event_raw_init, \
780 .regfunc = ftrace_raw_reg_event_##call, \ 737 .regfunc = ftrace_raw_reg_event_##call, \
781 .unregfunc = ftrace_raw_unreg_event_##call, \ 738 .unregfunc = ftrace_raw_unreg_event_##call, \
782 .show_format = ftrace_format_##template, \ 739 .show_format = ftrace_format_##template, \
@@ -793,7 +750,7 @@ __attribute__((section("_ftrace_events"))) event_##call = { \
793 .name = #call, \ 750 .name = #call, \
794 .system = __stringify(TRACE_SYSTEM), \ 751 .system = __stringify(TRACE_SYSTEM), \
795 .event = &ftrace_event_type_##call, \ 752 .event = &ftrace_event_type_##call, \
796 .raw_init = ftrace_raw_init_event_##call, \ 753 .raw_init = trace_event_raw_init, \
797 .regfunc = ftrace_raw_reg_event_##call, \ 754 .regfunc = ftrace_raw_reg_event_##call, \
798 .unregfunc = ftrace_raw_unreg_event_##call, \ 755 .unregfunc = ftrace_raw_unreg_event_##call, \
799 .show_format = ftrace_format_##call, \ 756 .show_format = ftrace_format_##call, \
@@ -953,7 +910,6 @@ end: \
953 perf_swevent_put_recursion_context(rctx); \ 910 perf_swevent_put_recursion_context(rctx); \
954end_recursion: \ 911end_recursion: \
955 local_irq_restore(irq_flags); \ 912 local_irq_restore(irq_flags); \
956 \
957} 913}
958 914
959#undef DEFINE_EVENT 915#undef DEFINE_EVENT