perf stat: Poll for monitored tasks being alive
Adding the check for tasks we monitor via -p/-t options, and finish stat if there's no longer task to monitor. Requested-by: Stephane Eranian <eranian@google.com> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Link: http://lkml.kernel.org/r/20181022093015.9106-1-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
a937c6658b
commit
cbb5df7e96
|
@ -409,6 +409,28 @@ static struct perf_evsel *perf_evsel__reset_weak_group(struct perf_evsel *evsel)
|
||||||
return leader;
|
return leader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool is_target_alive(struct target *_target,
|
||||||
|
struct thread_map *threads)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!target__has_task(_target))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
for (i = 0; i < threads->nr; i++) {
|
||||||
|
char path[PATH_MAX];
|
||||||
|
|
||||||
|
scnprintf(path, PATH_MAX, "%s/%d", procfs__mountpoint(),
|
||||||
|
threads->map[i].pid);
|
||||||
|
|
||||||
|
if (!stat(path, &st))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static int __run_perf_stat(int argc, const char **argv, int run_idx)
|
static int __run_perf_stat(int argc, const char **argv, int run_idx)
|
||||||
{
|
{
|
||||||
int interval = stat_config.interval;
|
int interval = stat_config.interval;
|
||||||
|
@ -579,6 +601,8 @@ try_again:
|
||||||
enable_counters();
|
enable_counters();
|
||||||
while (!done) {
|
while (!done) {
|
||||||
nanosleep(&ts, NULL);
|
nanosleep(&ts, NULL);
|
||||||
|
if (!is_target_alive(&target, evsel_list->threads))
|
||||||
|
break;
|
||||||
if (timeout)
|
if (timeout)
|
||||||
break;
|
break;
|
||||||
if (interval) {
|
if (interval) {
|
||||||
|
|
Loading…
Reference in New Issue