diff options
Diffstat (limited to 'tools/perf/builtin-sched.c')
-rw-r--r-- | tools/perf/builtin-sched.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 4f5a03e43444..f67bce2a83b4 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c | |||
@@ -22,7 +22,7 @@ | |||
22 | static char const *input_name = "perf.data"; | 22 | static char const *input_name = "perf.data"; |
23 | 23 | ||
24 | static char default_sort_order[] = "avg, max, switch, runtime"; | 24 | static char default_sort_order[] = "avg, max, switch, runtime"; |
25 | static char *sort_order = default_sort_order; | 25 | static const char *sort_order = default_sort_order; |
26 | 26 | ||
27 | static int profile_cpu = -1; | 27 | static int profile_cpu = -1; |
28 | 28 | ||
@@ -68,10 +68,10 @@ enum sched_event_type { | |||
68 | 68 | ||
69 | struct sched_atom { | 69 | struct sched_atom { |
70 | enum sched_event_type type; | 70 | enum sched_event_type type; |
71 | int specific_wait; | ||
71 | u64 timestamp; | 72 | u64 timestamp; |
72 | u64 duration; | 73 | u64 duration; |
73 | unsigned long nr; | 74 | unsigned long nr; |
74 | int specific_wait; | ||
75 | sem_t *wait_sem; | 75 | sem_t *wait_sem; |
76 | struct task_desc *wakee; | 76 | struct task_desc *wakee; |
77 | }; | 77 | }; |
@@ -105,7 +105,7 @@ static u64 sum_runtime; | |||
105 | static u64 sum_fluct; | 105 | static u64 sum_fluct; |
106 | static u64 run_avg; | 106 | static u64 run_avg; |
107 | 107 | ||
108 | static unsigned long replay_repeat = 10; | 108 | static unsigned int replay_repeat = 10; |
109 | static unsigned long nr_timestamps; | 109 | static unsigned long nr_timestamps; |
110 | static unsigned long nr_unordered_timestamps; | 110 | static unsigned long nr_unordered_timestamps; |
111 | static unsigned long nr_state_machine_bugs; | 111 | static unsigned long nr_state_machine_bugs; |
@@ -1641,30 +1641,26 @@ static int process_sample_event(event_t *event, struct perf_session *session) | |||
1641 | return 0; | 1641 | return 0; |
1642 | } | 1642 | } |
1643 | 1643 | ||
1644 | static int process_lost_event(event_t *event __used, | ||
1645 | struct perf_session *session __used) | ||
1646 | { | ||
1647 | nr_lost_chunks++; | ||
1648 | nr_lost_events += event->lost.lost; | ||
1649 | |||
1650 | return 0; | ||
1651 | } | ||
1652 | |||
1653 | static struct perf_event_ops event_ops = { | 1644 | static struct perf_event_ops event_ops = { |
1654 | .sample = process_sample_event, | 1645 | .sample = process_sample_event, |
1655 | .comm = event__process_comm, | 1646 | .comm = event__process_comm, |
1656 | .lost = process_lost_event, | 1647 | .lost = event__process_lost, |
1648 | .ordered_samples = true, | ||
1657 | }; | 1649 | }; |
1658 | 1650 | ||
1659 | static int read_events(void) | 1651 | static int read_events(void) |
1660 | { | 1652 | { |
1661 | int err = -EINVAL; | 1653 | int err = -EINVAL; |
1662 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, 0); | 1654 | struct perf_session *session = perf_session__new(input_name, O_RDONLY, 0, false); |
1663 | if (session == NULL) | 1655 | if (session == NULL) |
1664 | return -ENOMEM; | 1656 | return -ENOMEM; |
1665 | 1657 | ||
1666 | if (perf_session__has_traces(session, "record -R")) | 1658 | if (perf_session__has_traces(session, "record -R")) { |
1667 | err = perf_session__process_events(session, &event_ops); | 1659 | err = perf_session__process_events(session, &event_ops); |
1660 | nr_events = session->hists.stats.nr_events[0]; | ||
1661 | nr_lost_events = session->hists.stats.total_lost; | ||
1662 | nr_lost_chunks = session->hists.stats.nr_events[PERF_RECORD_LOST]; | ||
1663 | } | ||
1668 | 1664 | ||
1669 | perf_session__delete(session); | 1665 | perf_session__delete(session); |
1670 | return err; | 1666 | return err; |
@@ -1790,7 +1786,7 @@ static const char * const sched_usage[] = { | |||
1790 | static const struct option sched_options[] = { | 1786 | static const struct option sched_options[] = { |
1791 | OPT_STRING('i', "input", &input_name, "file", | 1787 | OPT_STRING('i', "input", &input_name, "file", |
1792 | "input file name"), | 1788 | "input file name"), |
1793 | OPT_BOOLEAN('v', "verbose", &verbose, | 1789 | OPT_INCR('v', "verbose", &verbose, |
1794 | "be more verbose (show symbol address, etc)"), | 1790 | "be more verbose (show symbol address, etc)"), |
1795 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, | 1791 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, |
1796 | "dump raw trace in ASCII"), | 1792 | "dump raw trace in ASCII"), |
@@ -1805,7 +1801,7 @@ static const char * const latency_usage[] = { | |||
1805 | static const struct option latency_options[] = { | 1801 | static const struct option latency_options[] = { |
1806 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", | 1802 | OPT_STRING('s', "sort", &sort_order, "key[,key2...]", |
1807 | "sort by key(s): runtime, switch, avg, max"), | 1803 | "sort by key(s): runtime, switch, avg, max"), |
1808 | OPT_BOOLEAN('v', "verbose", &verbose, | 1804 | OPT_INCR('v', "verbose", &verbose, |
1809 | "be more verbose (show symbol address, etc)"), | 1805 | "be more verbose (show symbol address, etc)"), |
1810 | OPT_INTEGER('C', "CPU", &profile_cpu, | 1806 | OPT_INTEGER('C', "CPU", &profile_cpu, |
1811 | "CPU to profile on"), | 1807 | "CPU to profile on"), |
@@ -1820,9 +1816,9 @@ static const char * const replay_usage[] = { | |||
1820 | }; | 1816 | }; |
1821 | 1817 | ||
1822 | static const struct option replay_options[] = { | 1818 | static const struct option replay_options[] = { |
1823 | OPT_INTEGER('r', "repeat", &replay_repeat, | 1819 | OPT_UINTEGER('r', "repeat", &replay_repeat, |
1824 | "repeat the workload replay N times (-1: infinite)"), | 1820 | "repeat the workload replay N times (-1: infinite)"), |
1825 | OPT_BOOLEAN('v', "verbose", &verbose, | 1821 | OPT_INCR('v', "verbose", &verbose, |
1826 | "be more verbose (show symbol address, etc)"), | 1822 | "be more verbose (show symbol address, etc)"), |
1827 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, | 1823 | OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, |
1828 | "dump raw trace in ASCII"), | 1824 | "dump raw trace in ASCII"), |
@@ -1850,7 +1846,6 @@ static const char *record_args[] = { | |||
1850 | "record", | 1846 | "record", |
1851 | "-a", | 1847 | "-a", |
1852 | "-R", | 1848 | "-R", |
1853 | "-M", | ||
1854 | "-f", | 1849 | "-f", |
1855 | "-m", "1024", | 1850 | "-m", "1024", |
1856 | "-c", "1", | 1851 | "-c", "1", |