Messages in this thread | | | Date | Tue, 23 Jun 2020 16:56:22 +0200 | From | Jiri Olsa <> | Subject | Re: [PATCH v8 07/13] perf stat: factor out event handling loop into dispatch_events() |
| |
On Wed, Jun 17, 2020 at 11:40:03AM +0300, Alexey Budankov wrote: > > Consolidate event dispatching loops for fork, attach and system > wide monitoring use cases into common dispatch_events() function. > > Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com> > --- > tools/perf/builtin-stat.c | 35 ++++++++++++++++++++++++----------- > 1 file changed, 24 insertions(+), 11 deletions(-) > > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c > index 3bc538576607..39749c290508 100644 > --- a/tools/perf/builtin-stat.c > +++ b/tools/perf/builtin-stat.c > @@ -557,6 +557,27 @@ static bool is_target_alive(struct target *_target, > return false; > } > > +static int dispatch_events(bool forks, int timeout, int interval, int *times, struct timespec *ts) > +{ > + bool stop = false; > + int child = 0, status = 0; > + > + while (1) { > + if (forks) > + child = waitpid(child_pid, &status, WNOHANG); > + else > + child = !is_target_alive(&target, evsel_list->core.threads) ? 1 : 0;
please renme child to something more accurate, so the condition below makes more sense, like child_stoped or such
jirka
> + > + if (done || stop || child) > + break; > + > + nanosleep(ts, NULL); > + stop = process_timeout(timeout, interval, times); > + } > + > + return status; > +} > +
SNIP
| |