diff options
Diffstat (limited to 'tools/perf/util/evlist.c')
| -rw-r--r-- | tools/perf/util/evlist.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 6689378ee577..51ead577533f 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
| @@ -1868,12 +1868,12 @@ static void *perf_evlist__poll_thread(void *arg) | |||
| 1868 | { | 1868 | { |
| 1869 | struct perf_evlist *evlist = arg; | 1869 | struct perf_evlist *evlist = arg; |
| 1870 | bool draining = false; | 1870 | bool draining = false; |
| 1871 | int i; | 1871 | int i, done = 0; |
| 1872 | |||
| 1873 | while (!done) { | ||
| 1874 | bool got_data = false; | ||
| 1872 | 1875 | ||
| 1873 | while (draining || !(evlist->thread.done)) { | 1876 | if (evlist->thread.done) |
| 1874 | if (draining) | ||
| 1875 | draining = false; | ||
| 1876 | else if (evlist->thread.done) | ||
| 1877 | draining = true; | 1877 | draining = true; |
| 1878 | 1878 | ||
| 1879 | if (!draining) | 1879 | if (!draining) |
| @@ -1894,9 +1894,13 @@ static void *perf_evlist__poll_thread(void *arg) | |||
| 1894 | pr_warning("cannot locate proper evsel for the side band event\n"); | 1894 | pr_warning("cannot locate proper evsel for the side band event\n"); |
| 1895 | 1895 | ||
| 1896 | perf_mmap__consume(map); | 1896 | perf_mmap__consume(map); |
| 1897 | got_data = true; | ||
| 1897 | } | 1898 | } |
| 1898 | perf_mmap__read_done(map); | 1899 | perf_mmap__read_done(map); |
| 1899 | } | 1900 | } |
| 1901 | |||
| 1902 | if (draining && !got_data) | ||
| 1903 | break; | ||
| 1900 | } | 1904 | } |
| 1901 | return NULL; | 1905 | return NULL; |
| 1902 | } | 1906 | } |
