diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-02-14 13:05:28 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-02-22 20:23:40 -0500 |
commit | 313e53b08e99b1dacf9ea2b0fbe97890db1ea95f (patch) | |
tree | b840f0c7e57aa40739139074acb2f8ca991ccb18 /tools/perf | |
parent | ccda068f96138734eb40e9202ea9562566b43c12 (diff) |
perf session: Remove perf_session from some deliver event routines
Further untangling perf_session from plain event delivery routines.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-cvz8e6pwyogs4w14582iis9w@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/session.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 34dd749dc390..0133d01d51bd 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -824,16 +824,15 @@ static struct machine *machines__find_for_cpumode(struct machines *machines, | |||
824 | return &machines->host; | 824 | return &machines->host; |
825 | } | 825 | } |
826 | 826 | ||
827 | static int deliver_sample_value(struct perf_session *session, | 827 | static int deliver_sample_value(struct perf_evlist *evlist, |
828 | struct perf_tool *tool, | 828 | struct perf_tool *tool, |
829 | union perf_event *event, | 829 | union perf_event *event, |
830 | struct perf_sample *sample, | 830 | struct perf_sample *sample, |
831 | struct sample_read_value *v, | 831 | struct sample_read_value *v, |
832 | struct machine *machine) | 832 | struct machine *machine) |
833 | { | 833 | { |
834 | struct perf_sample_id *sid; | 834 | struct perf_sample_id *sid = perf_evlist__id2sid(evlist, v->id); |
835 | 835 | ||
836 | sid = perf_evlist__id2sid(session->evlist, v->id); | ||
837 | if (sid) { | 836 | if (sid) { |
838 | sample->id = v->id; | 837 | sample->id = v->id; |
839 | sample->period = v->value - sid->period; | 838 | sample->period = v->value - sid->period; |
@@ -841,14 +840,14 @@ static int deliver_sample_value(struct perf_session *session, | |||
841 | } | 840 | } |
842 | 841 | ||
843 | if (!sid || sid->evsel == NULL) { | 842 | if (!sid || sid->evsel == NULL) { |
844 | ++session->evlist->stats.nr_unknown_id; | 843 | ++evlist->stats.nr_unknown_id; |
845 | return 0; | 844 | return 0; |
846 | } | 845 | } |
847 | 846 | ||
848 | return tool->sample(tool, event, sample, sid->evsel, machine); | 847 | return tool->sample(tool, event, sample, sid->evsel, machine); |
849 | } | 848 | } |
850 | 849 | ||
851 | static int deliver_sample_group(struct perf_session *session, | 850 | static int deliver_sample_group(struct perf_evlist *evlist, |
852 | struct perf_tool *tool, | 851 | struct perf_tool *tool, |
853 | union perf_event *event, | 852 | union perf_event *event, |
854 | struct perf_sample *sample, | 853 | struct perf_sample *sample, |
@@ -858,7 +857,7 @@ static int deliver_sample_group(struct perf_session *session, | |||
858 | u64 i; | 857 | u64 i; |
859 | 858 | ||
860 | for (i = 0; i < sample->read.group.nr; i++) { | 859 | for (i = 0; i < sample->read.group.nr; i++) { |
861 | ret = deliver_sample_value(session, tool, event, sample, | 860 | ret = deliver_sample_value(evlist, tool, event, sample, |
862 | &sample->read.group.values[i], | 861 | &sample->read.group.values[i], |
863 | machine); | 862 | machine); |
864 | if (ret) | 863 | if (ret) |
@@ -869,7 +868,7 @@ static int deliver_sample_group(struct perf_session *session, | |||
869 | } | 868 | } |
870 | 869 | ||
871 | static int | 870 | static int |
872 | perf_session__deliver_sample(struct perf_session *session, | 871 | perf_evlist__deliver_sample(struct perf_evlist *evlist, |
873 | struct perf_tool *tool, | 872 | struct perf_tool *tool, |
874 | union perf_event *event, | 873 | union perf_event *event, |
875 | struct perf_sample *sample, | 874 | struct perf_sample *sample, |
@@ -886,10 +885,10 @@ perf_session__deliver_sample(struct perf_session *session, | |||
886 | 885 | ||
887 | /* For PERF_SAMPLE_READ we have either single or group mode. */ | 886 | /* For PERF_SAMPLE_READ we have either single or group mode. */ |
888 | if (read_format & PERF_FORMAT_GROUP) | 887 | if (read_format & PERF_FORMAT_GROUP) |
889 | return deliver_sample_group(session, tool, event, sample, | 888 | return deliver_sample_group(evlist, tool, event, sample, |
890 | machine); | 889 | machine); |
891 | else | 890 | else |
892 | return deliver_sample_value(session, tool, event, sample, | 891 | return deliver_sample_value(evlist, tool, event, sample, |
893 | &sample->read.one, machine); | 892 | &sample->read.one, machine); |
894 | } | 893 | } |
895 | 894 | ||
@@ -898,12 +897,13 @@ int perf_session__deliver_event(struct perf_session *session, | |||
898 | struct perf_sample *sample, | 897 | struct perf_sample *sample, |
899 | struct perf_tool *tool, u64 file_offset) | 898 | struct perf_tool *tool, u64 file_offset) |
900 | { | 899 | { |
900 | struct perf_evlist *evlist = session->evlist; | ||
901 | struct perf_evsel *evsel; | 901 | struct perf_evsel *evsel; |
902 | struct machine *machine; | 902 | struct machine *machine; |
903 | 903 | ||
904 | dump_event(session, event, file_offset, sample); | 904 | dump_event(session, event, file_offset, sample); |
905 | 905 | ||
906 | evsel = perf_evlist__id2evsel(session->evlist, sample->id); | 906 | evsel = perf_evlist__id2evsel(evlist, sample->id); |
907 | 907 | ||
908 | machine = machines__find_for_cpumode(&session->machines, event, sample); | 908 | machine = machines__find_for_cpumode(&session->machines, event, sample); |
909 | 909 | ||
@@ -911,15 +911,14 @@ int perf_session__deliver_event(struct perf_session *session, | |||
911 | case PERF_RECORD_SAMPLE: | 911 | case PERF_RECORD_SAMPLE: |
912 | dump_sample(evsel, event, sample); | 912 | dump_sample(evsel, event, sample); |
913 | if (evsel == NULL) { | 913 | if (evsel == NULL) { |
914 | ++session->evlist->stats.nr_unknown_id; | 914 | ++evlist->stats.nr_unknown_id; |
915 | return 0; | 915 | return 0; |
916 | } | 916 | } |
917 | if (machine == NULL) { | 917 | if (machine == NULL) { |
918 | ++session->evlist->stats.nr_unprocessable_samples; | 918 | ++evlist->stats.nr_unprocessable_samples; |
919 | return 0; | 919 | return 0; |
920 | } | 920 | } |
921 | return perf_session__deliver_sample(session, tool, event, | 921 | return perf_evlist__deliver_sample(evlist, tool, event, sample, evsel, machine); |
922 | sample, evsel, machine); | ||
923 | case PERF_RECORD_MMAP: | 922 | case PERF_RECORD_MMAP: |
924 | return tool->mmap(tool, event, sample, machine); | 923 | return tool->mmap(tool, event, sample, machine); |
925 | case PERF_RECORD_MMAP2: | 924 | case PERF_RECORD_MMAP2: |
@@ -932,7 +931,7 @@ int perf_session__deliver_event(struct perf_session *session, | |||
932 | return tool->exit(tool, event, sample, machine); | 931 | return tool->exit(tool, event, sample, machine); |
933 | case PERF_RECORD_LOST: | 932 | case PERF_RECORD_LOST: |
934 | if (tool->lost == perf_event__process_lost) | 933 | if (tool->lost == perf_event__process_lost) |
935 | session->evlist->stats.total_lost += event->lost.lost; | 934 | evlist->stats.total_lost += event->lost.lost; |
936 | return tool->lost(tool, event, sample, machine); | 935 | return tool->lost(tool, event, sample, machine); |
937 | case PERF_RECORD_READ: | 936 | case PERF_RECORD_READ: |
938 | return tool->read(tool, event, sample, evsel, machine); | 937 | return tool->read(tool, event, sample, evsel, machine); |
@@ -941,7 +940,7 @@ int perf_session__deliver_event(struct perf_session *session, | |||
941 | case PERF_RECORD_UNTHROTTLE: | 940 | case PERF_RECORD_UNTHROTTLE: |
942 | return tool->unthrottle(tool, event, sample, machine); | 941 | return tool->unthrottle(tool, event, sample, machine); |
943 | default: | 942 | default: |
944 | ++session->evlist->stats.nr_unknown_events; | 943 | ++evlist->stats.nr_unknown_events; |
945 | return -1; | 944 | return -1; |
946 | } | 945 | } |
947 | } | 946 | } |
@@ -1068,16 +1067,17 @@ static s64 perf_session__process_event(struct perf_session *session, | |||
1068 | struct perf_tool *tool, | 1067 | struct perf_tool *tool, |
1069 | u64 file_offset) | 1068 | u64 file_offset) |
1070 | { | 1069 | { |
1070 | struct perf_evlist *evlist = session->evlist; | ||
1071 | struct perf_sample sample; | 1071 | struct perf_sample sample; |
1072 | int ret; | 1072 | int ret; |
1073 | 1073 | ||
1074 | if (session->header.needs_swap) | 1074 | if (session->header.needs_swap) |
1075 | event_swap(event, perf_evlist__sample_id_all(session->evlist)); | 1075 | event_swap(event, perf_evlist__sample_id_all(evlist)); |
1076 | 1076 | ||
1077 | if (event->header.type >= PERF_RECORD_HEADER_MAX) | 1077 | if (event->header.type >= PERF_RECORD_HEADER_MAX) |
1078 | return -EINVAL; | 1078 | return -EINVAL; |
1079 | 1079 | ||
1080 | events_stats__inc(&session->evlist->stats, event->header.type); | 1080 | events_stats__inc(&evlist->stats, event->header.type); |
1081 | 1081 | ||
1082 | if (event->header.type >= PERF_RECORD_USER_TYPE_START) | 1082 | if (event->header.type >= PERF_RECORD_USER_TYPE_START) |
1083 | return perf_session__process_user_event(session, event, tool, file_offset); | 1083 | return perf_session__process_user_event(session, event, tool, file_offset); |
@@ -1085,7 +1085,7 @@ static s64 perf_session__process_event(struct perf_session *session, | |||
1085 | /* | 1085 | /* |
1086 | * For all kernel events we get the sample data | 1086 | * For all kernel events we get the sample data |
1087 | */ | 1087 | */ |
1088 | ret = perf_evlist__parse_sample(session->evlist, event, &sample); | 1088 | ret = perf_evlist__parse_sample(evlist, event, &sample); |
1089 | if (ret) | 1089 | if (ret) |
1090 | return ret; | 1090 | return ret; |
1091 | 1091 | ||