diff options
author | Michal Marek <mmarek@suse.cz> | 2011-03-09 10:15:44 -0500 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2011-03-09 10:15:44 -0500 |
commit | 2d8ad8719591fa803b0d589ed057fa46f49b7155 (patch) | |
tree | 4ae051577dad1161c91dafbf4207bb10a9dc91bb /kernel/trace/trace_output.c | |
parent | 9b4ce7bce5f30712fd926ab4599a803314a07719 (diff) | |
parent | c56eb8fb6dccb83d9fe62fd4dc00c834de9bc470 (diff) |
Merge commit 'v2.6.38-rc1' into kbuild/packaging
Diffstat (limited to 'kernel/trace/trace_output.c')
-rw-r--r-- | kernel/trace/trace_output.c | 198 |
1 files changed, 96 insertions, 102 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 8e46b3323cdc..02272baa2206 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -16,9 +16,6 @@ | |||
16 | 16 | ||
17 | DECLARE_RWSEM(trace_event_mutex); | 17 | DECLARE_RWSEM(trace_event_mutex); |
18 | 18 | ||
19 | DEFINE_PER_CPU(struct trace_seq, ftrace_event_seq); | ||
20 | EXPORT_PER_CPU_SYMBOL(ftrace_event_seq); | ||
21 | |||
22 | static struct hlist_head event_hash[EVENT_HASHSIZE] __read_mostly; | 19 | static struct hlist_head event_hash[EVENT_HASHSIZE] __read_mostly; |
23 | 20 | ||
24 | static int next_event_type = __TRACE_LAST_TYPE + 1; | 21 | static int next_event_type = __TRACE_LAST_TYPE + 1; |
@@ -209,6 +206,7 @@ int trace_seq_putc(struct trace_seq *s, unsigned char c) | |||
209 | 206 | ||
210 | return 1; | 207 | return 1; |
211 | } | 208 | } |
209 | EXPORT_SYMBOL(trace_seq_putc); | ||
212 | 210 | ||
213 | int trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len) | 211 | int trace_seq_putmem(struct trace_seq *s, const void *mem, size_t len) |
214 | { | 212 | { |
@@ -253,7 +251,7 @@ void *trace_seq_reserve(struct trace_seq *s, size_t len) | |||
253 | void *ret; | 251 | void *ret; |
254 | 252 | ||
255 | if (s->full) | 253 | if (s->full) |
256 | return 0; | 254 | return NULL; |
257 | 255 | ||
258 | if (len > ((PAGE_SIZE - 1) - s->len)) { | 256 | if (len > ((PAGE_SIZE - 1) - s->len)) { |
259 | s->full = 1; | 257 | s->full = 1; |
@@ -355,6 +353,21 @@ ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, | |||
355 | } | 353 | } |
356 | EXPORT_SYMBOL(ftrace_print_symbols_seq); | 354 | EXPORT_SYMBOL(ftrace_print_symbols_seq); |
357 | 355 | ||
356 | const char * | ||
357 | ftrace_print_hex_seq(struct trace_seq *p, const unsigned char *buf, int buf_len) | ||
358 | { | ||
359 | int i; | ||
360 | const char *ret = p->buffer + p->len; | ||
361 | |||
362 | for (i = 0; i < buf_len; i++) | ||
363 | trace_seq_printf(p, "%s%2.2x", i == 0 ? "" : " ", buf[i]); | ||
364 | |||
365 | trace_seq_putc(p, 0); | ||
366 | |||
367 | return ret; | ||
368 | } | ||
369 | EXPORT_SYMBOL(ftrace_print_hex_seq); | ||
370 | |||
358 | #ifdef CONFIG_KRETPROBES | 371 | #ifdef CONFIG_KRETPROBES |
359 | static inline const char *kretprobed(const char *name) | 372 | static inline const char *kretprobed(const char *name) |
360 | { | 373 | { |
@@ -726,6 +739,9 @@ int register_ftrace_event(struct trace_event *event) | |||
726 | if (WARN_ON(!event)) | 739 | if (WARN_ON(!event)) |
727 | goto out; | 740 | goto out; |
728 | 741 | ||
742 | if (WARN_ON(!event->funcs)) | ||
743 | goto out; | ||
744 | |||
729 | INIT_LIST_HEAD(&event->list); | 745 | INIT_LIST_HEAD(&event->list); |
730 | 746 | ||
731 | if (!event->type) { | 747 | if (!event->type) { |
@@ -758,14 +774,14 @@ int register_ftrace_event(struct trace_event *event) | |||
758 | goto out; | 774 | goto out; |
759 | } | 775 | } |
760 | 776 | ||
761 | if (event->trace == NULL) | 777 | if (event->funcs->trace == NULL) |
762 | event->trace = trace_nop_print; | 778 | event->funcs->trace = trace_nop_print; |
763 | if (event->raw == NULL) | 779 | if (event->funcs->raw == NULL) |
764 | event->raw = trace_nop_print; | 780 | event->funcs->raw = trace_nop_print; |
765 | if (event->hex == NULL) | 781 | if (event->funcs->hex == NULL) |
766 | event->hex = trace_nop_print; | 782 | event->funcs->hex = trace_nop_print; |
767 | if (event->binary == NULL) | 783 | if (event->funcs->binary == NULL) |
768 | event->binary = trace_nop_print; | 784 | event->funcs->binary = trace_nop_print; |
769 | 785 | ||
770 | key = event->type & (EVENT_HASHSIZE - 1); | 786 | key = event->type & (EVENT_HASHSIZE - 1); |
771 | 787 | ||
@@ -807,13 +823,15 @@ EXPORT_SYMBOL_GPL(unregister_ftrace_event); | |||
807 | * Standard events | 823 | * Standard events |
808 | */ | 824 | */ |
809 | 825 | ||
810 | enum print_line_t trace_nop_print(struct trace_iterator *iter, int flags) | 826 | enum print_line_t trace_nop_print(struct trace_iterator *iter, int flags, |
827 | struct trace_event *event) | ||
811 | { | 828 | { |
812 | return TRACE_TYPE_HANDLED; | 829 | return TRACE_TYPE_HANDLED; |
813 | } | 830 | } |
814 | 831 | ||
815 | /* TRACE_FN */ | 832 | /* TRACE_FN */ |
816 | static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags) | 833 | static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags, |
834 | struct trace_event *event) | ||
817 | { | 835 | { |
818 | struct ftrace_entry *field; | 836 | struct ftrace_entry *field; |
819 | struct trace_seq *s = &iter->seq; | 837 | struct trace_seq *s = &iter->seq; |
@@ -840,7 +858,8 @@ static enum print_line_t trace_fn_trace(struct trace_iterator *iter, int flags) | |||
840 | return TRACE_TYPE_PARTIAL_LINE; | 858 | return TRACE_TYPE_PARTIAL_LINE; |
841 | } | 859 | } |
842 | 860 | ||
843 | static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags) | 861 | static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags, |
862 | struct trace_event *event) | ||
844 | { | 863 | { |
845 | struct ftrace_entry *field; | 864 | struct ftrace_entry *field; |
846 | 865 | ||
@@ -854,7 +873,8 @@ static enum print_line_t trace_fn_raw(struct trace_iterator *iter, int flags) | |||
854 | return TRACE_TYPE_HANDLED; | 873 | return TRACE_TYPE_HANDLED; |
855 | } | 874 | } |
856 | 875 | ||
857 | static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags) | 876 | static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags, |
877 | struct trace_event *event) | ||
858 | { | 878 | { |
859 | struct ftrace_entry *field; | 879 | struct ftrace_entry *field; |
860 | struct trace_seq *s = &iter->seq; | 880 | struct trace_seq *s = &iter->seq; |
@@ -867,7 +887,8 @@ static enum print_line_t trace_fn_hex(struct trace_iterator *iter, int flags) | |||
867 | return TRACE_TYPE_HANDLED; | 887 | return TRACE_TYPE_HANDLED; |
868 | } | 888 | } |
869 | 889 | ||
870 | static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags) | 890 | static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags, |
891 | struct trace_event *event) | ||
871 | { | 892 | { |
872 | struct ftrace_entry *field; | 893 | struct ftrace_entry *field; |
873 | struct trace_seq *s = &iter->seq; | 894 | struct trace_seq *s = &iter->seq; |
@@ -880,14 +901,18 @@ static enum print_line_t trace_fn_bin(struct trace_iterator *iter, int flags) | |||
880 | return TRACE_TYPE_HANDLED; | 901 | return TRACE_TYPE_HANDLED; |
881 | } | 902 | } |
882 | 903 | ||
883 | static struct trace_event trace_fn_event = { | 904 | static struct trace_event_functions trace_fn_funcs = { |
884 | .type = TRACE_FN, | ||
885 | .trace = trace_fn_trace, | 905 | .trace = trace_fn_trace, |
886 | .raw = trace_fn_raw, | 906 | .raw = trace_fn_raw, |
887 | .hex = trace_fn_hex, | 907 | .hex = trace_fn_hex, |
888 | .binary = trace_fn_bin, | 908 | .binary = trace_fn_bin, |
889 | }; | 909 | }; |
890 | 910 | ||
911 | static struct trace_event trace_fn_event = { | ||
912 | .type = TRACE_FN, | ||
913 | .funcs = &trace_fn_funcs, | ||
914 | }; | ||
915 | |||
891 | /* TRACE_CTX an TRACE_WAKE */ | 916 | /* TRACE_CTX an TRACE_WAKE */ |
892 | static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, | 917 | static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, |
893 | char *delim) | 918 | char *delim) |
@@ -916,13 +941,14 @@ static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter, | |||
916 | return TRACE_TYPE_HANDLED; | 941 | return TRACE_TYPE_HANDLED; |
917 | } | 942 | } |
918 | 943 | ||
919 | static enum print_line_t trace_ctx_print(struct trace_iterator *iter, int flags) | 944 | static enum print_line_t trace_ctx_print(struct trace_iterator *iter, int flags, |
945 | struct trace_event *event) | ||
920 | { | 946 | { |
921 | return trace_ctxwake_print(iter, "==>"); | 947 | return trace_ctxwake_print(iter, "==>"); |
922 | } | 948 | } |
923 | 949 | ||
924 | static enum print_line_t trace_wake_print(struct trace_iterator *iter, | 950 | static enum print_line_t trace_wake_print(struct trace_iterator *iter, |
925 | int flags) | 951 | int flags, struct trace_event *event) |
926 | { | 952 | { |
927 | return trace_ctxwake_print(iter, " +"); | 953 | return trace_ctxwake_print(iter, " +"); |
928 | } | 954 | } |
@@ -950,12 +976,14 @@ static int trace_ctxwake_raw(struct trace_iterator *iter, char S) | |||
950 | return TRACE_TYPE_HANDLED; | 976 | return TRACE_TYPE_HANDLED; |
951 | } | 977 | } |
952 | 978 | ||
953 | static enum print_line_t trace_ctx_raw(struct trace_iterator *iter, int flags) | 979 | static enum print_line_t trace_ctx_raw(struct trace_iterator *iter, int flags, |
980 | struct trace_event *event) | ||
954 | { | 981 | { |
955 | return trace_ctxwake_raw(iter, 0); | 982 | return trace_ctxwake_raw(iter, 0); |
956 | } | 983 | } |
957 | 984 | ||
958 | static enum print_line_t trace_wake_raw(struct trace_iterator *iter, int flags) | 985 | static enum print_line_t trace_wake_raw(struct trace_iterator *iter, int flags, |
986 | struct trace_event *event) | ||
959 | { | 987 | { |
960 | return trace_ctxwake_raw(iter, '+'); | 988 | return trace_ctxwake_raw(iter, '+'); |
961 | } | 989 | } |
@@ -984,18 +1012,20 @@ static int trace_ctxwake_hex(struct trace_iterator *iter, char S) | |||
984 | return TRACE_TYPE_HANDLED; | 1012 | return TRACE_TYPE_HANDLED; |
985 | } | 1013 | } |
986 | 1014 | ||
987 | static enum print_line_t trace_ctx_hex(struct trace_iterator *iter, int flags) | 1015 | static enum print_line_t trace_ctx_hex(struct trace_iterator *iter, int flags, |
1016 | struct trace_event *event) | ||
988 | { | 1017 | { |
989 | return trace_ctxwake_hex(iter, 0); | 1018 | return trace_ctxwake_hex(iter, 0); |
990 | } | 1019 | } |
991 | 1020 | ||
992 | static enum print_line_t trace_wake_hex(struct trace_iterator *iter, int flags) | 1021 | static enum print_line_t trace_wake_hex(struct trace_iterator *iter, int flags, |
1022 | struct trace_event *event) | ||
993 | { | 1023 | { |
994 | return trace_ctxwake_hex(iter, '+'); | 1024 | return trace_ctxwake_hex(iter, '+'); |
995 | } | 1025 | } |
996 | 1026 | ||
997 | static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, | 1027 | static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, |
998 | int flags) | 1028 | int flags, struct trace_event *event) |
999 | { | 1029 | { |
1000 | struct ctx_switch_entry *field; | 1030 | struct ctx_switch_entry *field; |
1001 | struct trace_seq *s = &iter->seq; | 1031 | struct trace_seq *s = &iter->seq; |
@@ -1012,81 +1042,34 @@ static enum print_line_t trace_ctxwake_bin(struct trace_iterator *iter, | |||
1012 | return TRACE_TYPE_HANDLED; | 1042 | return TRACE_TYPE_HANDLED; |
1013 | } | 1043 | } |
1014 | 1044 | ||
1015 | static struct trace_event trace_ctx_event = { | 1045 | static struct trace_event_functions trace_ctx_funcs = { |
1016 | .type = TRACE_CTX, | ||
1017 | .trace = trace_ctx_print, | 1046 | .trace = trace_ctx_print, |
1018 | .raw = trace_ctx_raw, | 1047 | .raw = trace_ctx_raw, |
1019 | .hex = trace_ctx_hex, | 1048 | .hex = trace_ctx_hex, |
1020 | .binary = trace_ctxwake_bin, | 1049 | .binary = trace_ctxwake_bin, |
1021 | }; | 1050 | }; |
1022 | 1051 | ||
1023 | static struct trace_event trace_wake_event = { | 1052 | static struct trace_event trace_ctx_event = { |
1024 | .type = TRACE_WAKE, | 1053 | .type = TRACE_CTX, |
1054 | .funcs = &trace_ctx_funcs, | ||
1055 | }; | ||
1056 | |||
1057 | static struct trace_event_functions trace_wake_funcs = { | ||
1025 | .trace = trace_wake_print, | 1058 | .trace = trace_wake_print, |
1026 | .raw = trace_wake_raw, | 1059 | .raw = trace_wake_raw, |
1027 | .hex = trace_wake_hex, | 1060 | .hex = trace_wake_hex, |
1028 | .binary = trace_ctxwake_bin, | 1061 | .binary = trace_ctxwake_bin, |
1029 | }; | 1062 | }; |
1030 | 1063 | ||
1031 | /* TRACE_SPECIAL */ | 1064 | static struct trace_event trace_wake_event = { |
1032 | static enum print_line_t trace_special_print(struct trace_iterator *iter, | 1065 | .type = TRACE_WAKE, |
1033 | int flags) | 1066 | .funcs = &trace_wake_funcs, |
1034 | { | ||
1035 | struct special_entry *field; | ||
1036 | |||
1037 | trace_assign_type(field, iter->ent); | ||
1038 | |||
1039 | if (!trace_seq_printf(&iter->seq, "# %ld %ld %ld\n", | ||
1040 | field->arg1, | ||
1041 | field->arg2, | ||
1042 | field->arg3)) | ||
1043 | return TRACE_TYPE_PARTIAL_LINE; | ||
1044 | |||
1045 | return TRACE_TYPE_HANDLED; | ||
1046 | } | ||
1047 | |||
1048 | static enum print_line_t trace_special_hex(struct trace_iterator *iter, | ||
1049 | int flags) | ||
1050 | { | ||
1051 | struct special_entry *field; | ||
1052 | struct trace_seq *s = &iter->seq; | ||
1053 | |||
1054 | trace_assign_type(field, iter->ent); | ||
1055 | |||
1056 | SEQ_PUT_HEX_FIELD_RET(s, field->arg1); | ||
1057 | SEQ_PUT_HEX_FIELD_RET(s, field->arg2); | ||
1058 | SEQ_PUT_HEX_FIELD_RET(s, field->arg3); | ||
1059 | |||
1060 | return TRACE_TYPE_HANDLED; | ||
1061 | } | ||
1062 | |||
1063 | static enum print_line_t trace_special_bin(struct trace_iterator *iter, | ||
1064 | int flags) | ||
1065 | { | ||
1066 | struct special_entry *field; | ||
1067 | struct trace_seq *s = &iter->seq; | ||
1068 | |||
1069 | trace_assign_type(field, iter->ent); | ||
1070 | |||
1071 | SEQ_PUT_FIELD_RET(s, field->arg1); | ||
1072 | SEQ_PUT_FIELD_RET(s, field->arg2); | ||
1073 | SEQ_PUT_FIELD_RET(s, field->arg3); | ||
1074 | |||
1075 | return TRACE_TYPE_HANDLED; | ||
1076 | } | ||
1077 | |||
1078 | static struct trace_event trace_special_event = { | ||
1079 | .type = TRACE_SPECIAL, | ||
1080 | .trace = trace_special_print, | ||
1081 | .raw = trace_special_print, | ||
1082 | .hex = trace_special_hex, | ||
1083 | .binary = trace_special_bin, | ||
1084 | }; | 1067 | }; |
1085 | 1068 | ||
1086 | /* TRACE_STACK */ | 1069 | /* TRACE_STACK */ |
1087 | 1070 | ||
1088 | static enum print_line_t trace_stack_print(struct trace_iterator *iter, | 1071 | static enum print_line_t trace_stack_print(struct trace_iterator *iter, |
1089 | int flags) | 1072 | int flags, struct trace_event *event) |
1090 | { | 1073 | { |
1091 | struct stack_entry *field; | 1074 | struct stack_entry *field; |
1092 | struct trace_seq *s = &iter->seq; | 1075 | struct trace_seq *s = &iter->seq; |
@@ -1114,17 +1097,18 @@ static enum print_line_t trace_stack_print(struct trace_iterator *iter, | |||
1114 | return TRACE_TYPE_PARTIAL_LINE; | 1097 | return TRACE_TYPE_PARTIAL_LINE; |
1115 | } | 1098 | } |
1116 | 1099 | ||
1100 | static struct trace_event_functions trace_stack_funcs = { | ||
1101 | .trace = trace_stack_print, | ||
1102 | }; | ||
1103 | |||
1117 | static struct trace_event trace_stack_event = { | 1104 | static struct trace_event trace_stack_event = { |
1118 | .type = TRACE_STACK, | 1105 | .type = TRACE_STACK, |
1119 | .trace = trace_stack_print, | 1106 | .funcs = &trace_stack_funcs, |
1120 | .raw = trace_special_print, | ||
1121 | .hex = trace_special_hex, | ||
1122 | .binary = trace_special_bin, | ||
1123 | }; | 1107 | }; |
1124 | 1108 | ||
1125 | /* TRACE_USER_STACK */ | 1109 | /* TRACE_USER_STACK */ |
1126 | static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, | 1110 | static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, |
1127 | int flags) | 1111 | int flags, struct trace_event *event) |
1128 | { | 1112 | { |
1129 | struct userstack_entry *field; | 1113 | struct userstack_entry *field; |
1130 | struct trace_seq *s = &iter->seq; | 1114 | struct trace_seq *s = &iter->seq; |
@@ -1143,17 +1127,19 @@ static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, | |||
1143 | return TRACE_TYPE_PARTIAL_LINE; | 1127 | return TRACE_TYPE_PARTIAL_LINE; |
1144 | } | 1128 | } |
1145 | 1129 | ||
1130 | static struct trace_event_functions trace_user_stack_funcs = { | ||
1131 | .trace = trace_user_stack_print, | ||
1132 | }; | ||
1133 | |||
1146 | static struct trace_event trace_user_stack_event = { | 1134 | static struct trace_event trace_user_stack_event = { |
1147 | .type = TRACE_USER_STACK, | 1135 | .type = TRACE_USER_STACK, |
1148 | .trace = trace_user_stack_print, | 1136 | .funcs = &trace_user_stack_funcs, |
1149 | .raw = trace_special_print, | ||
1150 | .hex = trace_special_hex, | ||
1151 | .binary = trace_special_bin, | ||
1152 | }; | 1137 | }; |
1153 | 1138 | ||
1154 | /* TRACE_BPRINT */ | 1139 | /* TRACE_BPRINT */ |
1155 | static enum print_line_t | 1140 | static enum print_line_t |
1156 | trace_bprint_print(struct trace_iterator *iter, int flags) | 1141 | trace_bprint_print(struct trace_iterator *iter, int flags, |
1142 | struct trace_event *event) | ||
1157 | { | 1143 | { |
1158 | struct trace_entry *entry = iter->ent; | 1144 | struct trace_entry *entry = iter->ent; |
1159 | struct trace_seq *s = &iter->seq; | 1145 | struct trace_seq *s = &iter->seq; |
@@ -1178,7 +1164,8 @@ trace_bprint_print(struct trace_iterator *iter, int flags) | |||
1178 | 1164 | ||
1179 | 1165 | ||
1180 | static enum print_line_t | 1166 | static enum print_line_t |
1181 | trace_bprint_raw(struct trace_iterator *iter, int flags) | 1167 | trace_bprint_raw(struct trace_iterator *iter, int flags, |
1168 | struct trace_event *event) | ||
1182 | { | 1169 | { |
1183 | struct bprint_entry *field; | 1170 | struct bprint_entry *field; |
1184 | struct trace_seq *s = &iter->seq; | 1171 | struct trace_seq *s = &iter->seq; |
@@ -1197,16 +1184,19 @@ trace_bprint_raw(struct trace_iterator *iter, int flags) | |||
1197 | return TRACE_TYPE_PARTIAL_LINE; | 1184 | return TRACE_TYPE_PARTIAL_LINE; |
1198 | } | 1185 | } |
1199 | 1186 | ||
1187 | static struct trace_event_functions trace_bprint_funcs = { | ||
1188 | .trace = trace_bprint_print, | ||
1189 | .raw = trace_bprint_raw, | ||
1190 | }; | ||
1200 | 1191 | ||
1201 | static struct trace_event trace_bprint_event = { | 1192 | static struct trace_event trace_bprint_event = { |
1202 | .type = TRACE_BPRINT, | 1193 | .type = TRACE_BPRINT, |
1203 | .trace = trace_bprint_print, | 1194 | .funcs = &trace_bprint_funcs, |
1204 | .raw = trace_bprint_raw, | ||
1205 | }; | 1195 | }; |
1206 | 1196 | ||
1207 | /* TRACE_PRINT */ | 1197 | /* TRACE_PRINT */ |
1208 | static enum print_line_t trace_print_print(struct trace_iterator *iter, | 1198 | static enum print_line_t trace_print_print(struct trace_iterator *iter, |
1209 | int flags) | 1199 | int flags, struct trace_event *event) |
1210 | { | 1200 | { |
1211 | struct print_entry *field; | 1201 | struct print_entry *field; |
1212 | struct trace_seq *s = &iter->seq; | 1202 | struct trace_seq *s = &iter->seq; |
@@ -1225,7 +1215,8 @@ static enum print_line_t trace_print_print(struct trace_iterator *iter, | |||
1225 | return TRACE_TYPE_PARTIAL_LINE; | 1215 | return TRACE_TYPE_PARTIAL_LINE; |
1226 | } | 1216 | } |
1227 | 1217 | ||
1228 | static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags) | 1218 | static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags, |
1219 | struct trace_event *event) | ||
1229 | { | 1220 | { |
1230 | struct print_entry *field; | 1221 | struct print_entry *field; |
1231 | 1222 | ||
@@ -1240,18 +1231,21 @@ static enum print_line_t trace_print_raw(struct trace_iterator *iter, int flags) | |||
1240 | return TRACE_TYPE_PARTIAL_LINE; | 1231 | return TRACE_TYPE_PARTIAL_LINE; |
1241 | } | 1232 | } |
1242 | 1233 | ||
1243 | static struct trace_event trace_print_event = { | 1234 | static struct trace_event_functions trace_print_funcs = { |
1244 | .type = TRACE_PRINT, | ||
1245 | .trace = trace_print_print, | 1235 | .trace = trace_print_print, |
1246 | .raw = trace_print_raw, | 1236 | .raw = trace_print_raw, |
1247 | }; | 1237 | }; |
1248 | 1238 | ||
1239 | static struct trace_event trace_print_event = { | ||
1240 | .type = TRACE_PRINT, | ||
1241 | .funcs = &trace_print_funcs, | ||
1242 | }; | ||
1243 | |||
1249 | 1244 | ||
1250 | static struct trace_event *events[] __initdata = { | 1245 | static struct trace_event *events[] __initdata = { |
1251 | &trace_fn_event, | 1246 | &trace_fn_event, |
1252 | &trace_ctx_event, | 1247 | &trace_ctx_event, |
1253 | &trace_wake_event, | 1248 | &trace_wake_event, |
1254 | &trace_special_event, | ||
1255 | &trace_stack_event, | 1249 | &trace_stack_event, |
1256 | &trace_user_stack_event, | 1250 | &trace_user_stack_event, |
1257 | &trace_bprint_event, | 1251 | &trace_bprint_event, |