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_output.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_output.c')
-rw-r--r-- | kernel/trace/trace_output.c | 137 |
1 files changed, 92 insertions, 45 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index ab13d7008061..57c1b4596470 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -742,6 +742,9 @@ int register_ftrace_event(struct trace_event *event) | |||
742 | if (WARN_ON(!event)) | 742 | if (WARN_ON(!event)) |
743 | goto out; | 743 | goto out; |
744 | 744 | ||
745 | if (WARN_ON(!event->funcs)) | ||
746 | goto out; | ||
747 | |||
745 | INIT_LIST_HEAD(&event->list); | 748 | INIT_LIST_HEAD(&event->list); |
746 | 749 | ||
747 | if (!event->type) { | 750 | if (!event->type) { |
@@ -774,14 +777,14 @@ int register_ftrace_event(struct trace_event *event) | |||
774 | goto out; | 777 | goto out; |
775 | } | 778 | } |
776 | 779 | ||
777 | if (event->trace == NULL) | 780 | if (event->funcs->trace == NULL) |
778 | event->trace = trace_nop_print; | 781 | event->funcs->trace = trace_nop_print; |
779 | if (event->raw == NULL) | 782 | if (event->funcs->raw == NULL) |
780 | event->raw = trace_nop_print; | 783 | event->funcs->raw = trace_nop_print; |
781 | if (event->hex == NULL) | 784 | if (event->funcs->hex == NULL) |
782 | event->hex = trace_nop_print; | 785 | event->funcs->hex = trace_nop_print; |
783 | if (event->binary == NULL) | 786 | if (event->funcs->binary == NULL) |
784 | event->binary = trace_nop_print; | 787 | event->funcs->binary = trace_nop_print; |
785 | 788 | ||
786 | key = event->type & (EVENT_HASHSIZE - 1); | 789 | key = event->type & (EVENT_HASHSIZE - 1); |
787 | 790 | ||
@@ -823,13 +826,15 @@ EXPORT_SYMBOL_GPL(unregister_ftrace_event); | |||
823 | * Standard events | 826 | * Standard events |
824 | */ | 827 | */ |
825 | 828 | ||
826 | enum print_line_t trace_nop_print(struct trace_iterator *iter, int flags) | 829 | enum print_line_t trace_nop_print(struct trace_iterator *iter, int flags, |
830 | struct trace_event *event) | ||
827 | { | 831 | { |
828 | return TRACE_TYPE_HANDLED; | 832 | return TRACE_TYPE_HANDLED; |
829 | } | 833 | } |
830 | 834 | ||
831 | /* TRACE_FN */ | 835 | /* TRACE_FN */ |
832 | static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags) | 836 | static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags, |
837 | struct trace_event *event) | ||
833 | { | 838 | { |
834 | struct ftrace_entry *field; | 839 | struct ftrace_entry *field; |
835 | struct trace_seq *s = &iter->seq; | 840 | struct trace_seq *s = &iter->seq; |
@@ -856,7 +861,8 @@ static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags) | |||
856 | return TRACE_TYPE_PARTIAL_LINE; | 861 | return TRACE_TYPE_PARTIAL_LINE; |
857 | } | 862 | } |
858 | 863 | ||
859 | static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags) | 864 | static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags, |
865 | struct trace_event *event) | ||
860 | { | 866 | { |
861 | struct ftrace_entry *field; | 867 | struct ftrace_entry *field; |
862 | 868 | ||
@@ -870,7 +876,8 @@ static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags) | |||
870 | return TRACE_TYPE_HANDLED; | 876 | return TRACE_TYPE_HANDLED; |
871 | } | 877 | } |
872 | 878 | ||
873 | static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags) | 879 | static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags, |
880 | struct trace_event *event) | ||
874 | { | 881 | { |
875 | struct ftrace_entry *field; | 882 | struct ftrace_entry *field; |
876 | struct trace_seq *s = &iter->seq; | 883 | struct trace_seq *s = &iter->seq; |
@@ -883,7 +890,8 @@ static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags) | |||
883 | return TRACE_TYPE_HANDLED; | 890 | return TRACE_TYPE_HANDLED; |
884 | } | 891 | } |
885 | 892 | ||
886 | static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags) | 893 | static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags, |
894 | struct trace_event *event) | ||
887 | { | 895 | { |
888 | struct ftrace_entry *field; | 896 | struct ftrace_entry *field; |
889 | struct trace_seq *s = &iter->seq; | 897 | struct trace_seq *s = &iter->seq; |
@@ -896,14 +904,18 @@ static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags) | |||
896 | return TRACE_TYPE_HANDLED; | 904 | return TRACE_TYPE_HANDLED; |
897 | } | 905 | } |
898 | 906 | ||
899 | static struct trace_event trace_fn_event = { | 907 | static struct trace_event_functions trace_fn_funcs = { |
900 | .type = TRACE_FN, | ||
901 | .trace = trace_fn_trace, | 908 | .trace = trace_fn_trace, |
902 | .raw = trace_fn_raw, | 909 | .raw = trace_fn_raw, |
903 | .hex = trace_fn_hex, | 910 | .hex = trace_fn_hex, |
904 | .binary = trace_fn_bin, | 911 | .binary = trace_fn_bin, |
905 | }; | 912 | }; |
906 | 913 | ||
914 | static struct trace_event trace_fn_event = { | ||
915 | .type = TRACE_FN, | ||
916 | .funcs = &trace_fn_funcs, | ||
917 | }; | ||
918 | |||
907 | /* TRACE_CTX an TRACE_WAKE */ | 919 | /* TRACE_CTX an TRACE_WAKE */ |
908 | static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, | 920 | static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, |
909 | char *delim) | 921 | char *delim) |
@@ -932,13 +944,14 @@ static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, | |||
932 | return TRACE_TYPE_HANDLED; | 944 | return TRACE_TYPE_HANDLED; |
933 | } | 945 | } |
934 | 946 | ||
935 | static enum print_line_t trace_ctx_print(struct trace_iterator *iter, int flags) | 947 | static enum print_line_t trace_ctx_print(struct trace_iterator *iter, int flags, |
948 | struct trace_event *event) | ||
936 | { | 949 | { |
937 | return trace_ctxwake_print(iter, "==>"); | 950 | return trace_ctxwake_print(iter, "==>"); |
938 | } | 951 | } |
939 | 952 | ||
940 | static enum print_line_t trace_wake_print(struct trace_iterator *iter, | 953 | static enum print_line_t trace_wake_print(struct trace_iterator *iter, |
941 | int flags) | 954 | int flags, struct trace_event *event) |
942 | { | 955 | { |
943 | return trace_ctxwake_print(iter, " +"); | 956 | return trace_ctxwake_print(iter, " +"); |
944 | } | 957 | } |
@@ -966,12 +979,14 @@ static int trace_ctxwake_raw(struct trace_iterator *iter, char S) | |||
966 | return TRACE_TYPE_HANDLED; | 979 | return TRACE_TYPE_HANDLED; |
967 | } | 980 | } |
968 | 981 | ||
969 | static enum print_line_t trace_ctx_raw(struct trace_iterator *iter, int flags) | 982 | static enum print_line_t trace_ctx_raw(struct trace_iterator *iter, int flags, |
983 | struct trace_event *event) | ||
970 | { | 984 | { |
971 | return trace_ctxwake_raw(iter, 0); | 985 | return trace_ctxwake_raw(iter, 0); |
972 | } | 986 | } |
973 | 987 | ||
974 | static enum print_line_t trace_wake_raw(struct trace_iterator *iter, int flags) | 988 | static enum print_line_t trace_wake_raw(struct trace_iterator *iter, int flags, |
989 | struct trace_event *event) | ||
975 | { | 990 | { |
976 | return trace_ctxwake_raw(iter, '+'); | 991 | return trace_ctxwake_raw(iter, '+'); |
977 | } | 992 | } |
@@ -1000,18 +1015,20 @@ static int trace_ctxwake_hex(struct trace_iterator *iter, char S) | |||
1000 | return TRACE_TYPE_HANDLED; | 1015 | return TRACE_TYPE_HANDLED; |
1001 | } | 1016 | } |
1002 | 1017 | ||
1003 | static enum print_line_t trace_ctx_hex(struct trace_iterator *iter, int flags) | 1018 | static enum print_line_t trace_ctx_hex(struct trace_iterator *iter, int flags, |
1019 | struct trace_event *event) | ||
1004 | { | 1020 | { |
1005 | return trace_ctxwake_hex(iter, 0); | 1021 | return trace_ctxwake_hex(iter, 0); |
1006 | } | 1022 | } |
1007 | 1023 | ||
1008 | static enum print_line_t trace_wake_hex(struct trace_iterator *iter, int flags) | 1024 | static enum print_line_t trace_wake_hex(struct trace_iterator *iter, int flags, |
1025 | struct trace_event *event) | ||
1009 | { | 1026 | { |
1010 | return trace_ctxwake_hex(iter, '+'); | 1027 | return trace_ctxwake_hex(iter, '+'); |
1011 | } | 1028 | } |
1012 | 1029 | ||
1013 | static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, | 1030 | static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, |
1014 | int flags) | 1031 | int flags, struct trace_event *event) |
1015 | { | 1032 | { |
1016 | struct ctx_switch_entry *field; | 1033 | struct ctx_switch_entry *field; |
1017 | struct trace_seq *s = &iter->seq; | 1034 | struct trace_seq *s = &iter->seq; |
@@ -1028,25 +1045,33 @@ static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, | |||
1028 | return TRACE_TYPE_HANDLED; | 1045 | return TRACE_TYPE_HANDLED; |
1029 | } | 1046 | } |
1030 | 1047 | ||
1031 | static struct trace_event trace_ctx_event = { | 1048 | static struct trace_event_functions trace_ctx_funcs = { |
1032 | .type = TRACE_CTX, | ||
1033 | .trace = trace_ctx_print, | 1049 | .trace = trace_ctx_print, |
1034 | .raw = trace_ctx_raw, | 1050 | .raw = trace_ctx_raw, |
1035 | .hex = trace_ctx_hex, | 1051 | .hex = trace_ctx_hex, |
1036 | .binary = trace_ctxwake_bin, | 1052 | .binary = trace_ctxwake_bin, |
1037 | }; | 1053 | }; |
1038 | 1054 | ||
1039 | static struct trace_event trace_wake_event = { | 1055 | static struct trace_event trace_ctx_event = { |
1040 | .type = TRACE_WAKE, | 1056 | .type = TRACE_CTX, |
1057 | .funcs = &trace_ctx_funcs, | ||
1058 | }; | ||
1059 | |||
1060 | static struct trace_event_functions trace_wake_funcs = { | ||
1041 | .trace = trace_wake_print, | 1061 | .trace = trace_wake_print, |
1042 | .raw = trace_wake_raw, | 1062 | .raw = trace_wake_raw, |
1043 | .hex = trace_wake_hex, | 1063 | .hex = trace_wake_hex, |
1044 | .binary = trace_ctxwake_bin, | 1064 | .binary = trace_ctxwake_bin, |
1045 | }; | 1065 | }; |
1046 | 1066 | ||
1067 | static struct trace_event trace_wake_event = { | ||
1068 | .type = TRACE_WAKE, | ||
1069 | .funcs = &trace_wake_funcs, | ||
1070 | }; | ||
1071 | |||
1047 | /* TRACE_SPECIAL */ | 1072 | /* TRACE_SPECIAL */ |
1048 | static enum print_line_t trace_special_print(struct trace_iterator *iter, | 1073 | static enum print_line_t trace_special_print(struct trace_iterator *iter, |
1049 | int flags) | 1074 | int flags, struct trace_event *event) |
1050 | { | 1075 | { |
1051 | struct special_entry *field; | 1076 | struct special_entry *field; |
1052 | 1077 | ||
@@ -1062,7 +1087,7 @@ static enum print_line_t trace_special_print(struct trace_iterator *iter, | |||
1062 | } | 1087 | } |
1063 | 1088 | ||
1064 | static enum print_line_t trace_special_hex(struct trace_iterator *iter, | 1089 | static enum print_line_t trace_special_hex(struct trace_iterator *iter, |
1065 | int flags) | 1090 | int flags, struct trace_event *event) |
1066 | { | 1091 | { |
1067 | struct special_entry *field; | 1092 | struct special_entry *field; |
1068 | struct trace_seq *s = &iter->seq; | 1093 | struct trace_seq *s = &iter->seq; |
@@ -1077,7 +1102,7 @@ static enum print_line_t trace_special_hex(struct trace_iterator *iter, | |||
1077 | } | 1102 | } |
1078 | 1103 | ||
1079 | static enum print_line_t trace_special_bin(struct trace_iterator *iter, | 1104 | static enum print_line_t trace_special_bin(struct trace_iterator *iter, |
1080 | int flags) | 1105 | int flags, struct trace_event *event) |
1081 | { | 1106 | { |
1082 | struct special_entry *field; | 1107 | struct special_entry *field; |
1083 | struct trace_seq *s = &iter->seq; | 1108 | struct trace_seq *s = &iter->seq; |
@@ -1091,18 +1116,22 @@ static enum print_line_t trace_special_bin(struct trace_iterator *iter, | |||
1091 | return TRACE_TYPE_HANDLED; | 1116 | return TRACE_TYPE_HANDLED; |
1092 | } | 1117 | } |
1093 | 1118 | ||
1094 | static struct trace_event trace_special_event = { | 1119 | static struct trace_event_functions trace_special_funcs = { |
1095 | .type = TRACE_SPECIAL, | ||
1096 | .trace = trace_special_print, | 1120 | .trace = trace_special_print, |
1097 | .raw = trace_special_print, | 1121 | .raw = trace_special_print, |
1098 | .hex = trace_special_hex, | 1122 | .hex = trace_special_hex, |
1099 | .binary = trace_special_bin, | 1123 | .binary = trace_special_bin, |
1100 | }; | 1124 | }; |
1101 | 1125 | ||
1126 | static struct trace_event trace_special_event = { | ||
1127 | .type = TRACE_SPECIAL, | ||
1128 | .funcs = &trace_special_funcs, | ||
1129 | }; | ||
1130 | |||
1102 | /* TRACE_STACK */ | 1131 | /* TRACE_STACK */ |
1103 | 1132 | ||
1104 | static enum print_line_t trace_stack_print(struct trace_iterator *iter, | 1133 | static enum print_line_t trace_stack_print(struct trace_iterator *iter, |
1105 | int flags) | 1134 | int flags, struct trace_event *event) |
1106 | { | 1135 | { |
1107 | struct stack_entry *field; | 1136 | struct stack_entry *field; |
1108 | struct trace_seq *s = &iter->seq; | 1137 | struct trace_seq *s = &iter->seq; |
@@ -1130,17 +1159,21 @@ static enum print_line_t trace_stack_print(struct trace_iterator *iter, | |||
1130 | return TRACE_TYPE_PARTIAL_LINE; | 1159 | return TRACE_TYPE_PARTIAL_LINE; |
1131 | } | 1160 | } |
1132 | 1161 | ||
1133 | static struct trace_event trace_stack_event = { | 1162 | static struct trace_event_functions trace_stack_funcs = { |
1134 | .type = TRACE_STACK, | ||
1135 | .trace = trace_stack_print, | 1163 | .trace = trace_stack_print, |
1136 | .raw = trace_special_print, | 1164 | .raw = trace_special_print, |
1137 | .hex = trace_special_hex, | 1165 | .hex = trace_special_hex, |
1138 | .binary = trace_special_bin, | 1166 | .binary = trace_special_bin, |
1139 | }; | 1167 | }; |
1140 | 1168 | ||
1169 | static struct trace_event trace_stack_event = { | ||
1170 | .type = TRACE_STACK, | ||
1171 | .funcs = &trace_stack_funcs, | ||
1172 | }; | ||
1173 | |||
1141 | /* TRACE_USER_STACK */ | 1174 | /* TRACE_USER_STACK */ |
1142 | static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, | 1175 | static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, |
1143 | int flags) | 1176 | int flags, struct trace_event *event) |
1144 | { | 1177 | { |
1145 | struct userstack_entry *field; | 1178 | struct userstack_entry *field; |
1146 | struct trace_seq *s = &iter->seq; | 1179 | struct trace_seq *s = &iter->seq; |
@@ -1159,17 +1192,22 @@ static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, | |||
1159 | return TRACE_TYPE_PARTIAL_LINE; | 1192 | return TRACE_TYPE_PARTIAL_LINE; |
1160 | } | 1193 | } |
1161 | 1194 | ||
1162 | static struct trace_event trace_user_stack_event = { | 1195 | static struct trace_event_functions trace_user_stack_funcs = { |
1163 | .type = TRACE_USER_STACK, | ||
1164 | .trace = trace_user_stack_print, | 1196 | .trace = trace_user_stack_print, |
1165 | .raw = trace_special_print, | 1197 | .raw = trace_special_print, |
1166 | .hex = trace_special_hex, | 1198 | .hex = trace_special_hex, |
1167 | .binary = trace_special_bin, | 1199 | .binary = trace_special_bin, |
1168 | }; | 1200 | }; |
1169 | 1201 | ||
1202 | static struct trace_event trace_user_stack_event = { | ||
1203 | .type = TRACE_USER_STACK, | ||
1204 | .funcs = &trace_user_stack_funcs, | ||
1205 | }; | ||
1206 | |||
1170 | /* TRACE_BPRINT */ | 1207 | /* TRACE_BPRINT */ |
1171 | static enum print_line_t | 1208 | static enum print_line_t |
1172 | trace_bprint_print(struct trace_iterator *iter, int flags) | 1209 | trace_bprint_print(struct trace_iterator *iter, int flags, |
1210 | struct trace_event *event) | ||
1173 | { | 1211 | { |
1174 | struct trace_entry *entry = iter->ent; | 1212 | struct trace_entry *entry = iter->ent; |
1175 | struct trace_seq *s = &iter->seq; | 1213 | struct trace_seq *s = &iter->seq; |
@@ -1194,7 +1232,8 @@ trace_bprint_print(struct trace_iterator *iter, int flags) | |||
1194 | 1232 | ||
1195 | 1233 | ||
1196 | static enum print_line_t | 1234 | static enum print_line_t |
1197 | trace_bprint_raw(struct trace_iterator *iter, int flags) | 1235 | trace_bprint_raw(struct trace_iterator *iter, int flags, |
1236 | struct trace_event *event) | ||
1198 | { | 1237 | { |
1199 | struct bprint_entry *field; | 1238 | struct bprint_entry *field; |
1200 | struct trace_seq *s = &iter->seq; | 1239 | struct trace_seq *s = &iter->seq; |
@@ -1213,16 +1252,19 @@ trace_bprint_raw(struct trace_iterator *iter, int flags) | |||
1213 | return TRACE_TYPE_PARTIAL_LINE; | 1252 | return TRACE_TYPE_PARTIAL_LINE; |
1214 | } | 1253 | } |
1215 | 1254 | ||
1255 | static struct trace_event_functions trace_bprint_funcs = { | ||
1256 | .trace = trace_bprint_print, | ||
1257 | .raw = trace_bprint_raw, | ||
1258 | }; | ||
1216 | 1259 | ||
1217 | static struct trace_event trace_bprint_event = { | 1260 | static struct trace_event trace_bprint_event = { |
1218 | .type = TRACE_BPRINT, | 1261 | .type = TRACE_BPRINT, |
1219 | .trace = trace_bprint_print, | 1262 | .funcs = &trace_bprint_funcs, |
1220 | .raw = trace_bprint_raw, | ||
1221 | }; | 1263 | }; |
1222 | 1264 | ||
1223 | /* TRACE_PRINT */ | 1265 | /* TRACE_PRINT */ |
1224 | static enum print_line_t trace_print_print(struct trace_iterator *iter, | 1266 | static enum print_line_t trace_print_print(struct trace_iterator *iter, |
1225 | int flags) | 1267 | int flags, struct trace_event *event) |
1226 | { | 1268 | { |
1227 | struct print_entry *field; | 1269 | struct print_entry *field; |
1228 | struct trace_seq *s = &iter->seq; | 1270 | struct trace_seq *s = &iter->seq; |
@@ -1241,7 +1283,8 @@ static enum print_line_t trace_print_print(struct trace_iterator *iter, | |||
1241 | return TRACE_TYPE_PARTIAL_LINE; | 1283 | return TRACE_TYPE_PARTIAL_LINE; |
1242 | } | 1284 | } |
1243 | 1285 | ||
1244 | static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags) | 1286 | static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags, |
1287 | struct trace_event *event) | ||
1245 | { | 1288 | { |
1246 | struct print_entry *field; | 1289 | struct print_entry *field; |
1247 | 1290 | ||
@@ -1256,12 +1299,16 @@ static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags) | |||
1256 | return TRACE_TYPE_PARTIAL_LINE; | 1299 | return TRACE_TYPE_PARTIAL_LINE; |
1257 | } | 1300 | } |
1258 | 1301 | ||
1259 | static struct trace_event trace_print_event = { | 1302 | static struct trace_event_functions trace_print_funcs = { |
1260 | .type = TRACE_PRINT, | ||
1261 | .trace = trace_print_print, | 1303 | .trace = trace_print_print, |
1262 | .raw = trace_print_raw, | 1304 | .raw = trace_print_raw, |
1263 | }; | 1305 | }; |
1264 | 1306 | ||
1307 | static struct trace_event trace_print_event = { | ||
1308 | .type = TRACE_PRINT, | ||
1309 | .funcs = &trace_print_funcs, | ||
1310 | }; | ||
1311 | |||
1265 | 1312 | ||
1266 | static struct trace_event *events[] __initdata = { | 1313 | static struct trace_event *events[] __initdata = { |
1267 | &trace_fn_event, | 1314 | &trace_fn_event, |