lkml.org 
[lkml]   [2020]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v8 04/13] perf stat: factor out body of event handling loop for system wide
    On Wed, Jun 17, 2020 at 11:37:43AM +0300, Alexey Budankov wrote:
    >
    > Introduce process_timeout() and process_interval() functions that
    > factor out body of event handling loop for attach and system wide
    > monitoring use cases.
    >
    > Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
    > ---
    > tools/perf/builtin-stat.c | 28 ++++++++++++++++++++--------
    > 1 file changed, 20 insertions(+), 8 deletions(-)
    >
    > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
    > index 9be020e0098a..31f7ccf9537b 100644
    > --- a/tools/perf/builtin-stat.c
    > +++ b/tools/perf/builtin-stat.c
    > @@ -475,6 +475,23 @@ static void process_interval(void)
    > print_counters(&rs, 0, NULL);
    > }
    >
    > +static bool print_interval(unsigned int interval, int *times)
    > +{
    > + if (interval) {
    > + process_interval();
    > + if (interval_count && !(--(*times)))
    > + return true;
    > + }
    > + return false;
    > +}
    > +
    > +static bool process_timeout(int timeout, unsigned int interval, int *times)
    > +{
    > + if (timeout)
    > + return true;
    > + return print_interval(interval, times);
    > +}

    I think it's confusing to keep this together, that
    process_timeout triggers also interval processing

    I think you can keep the timeout separated from interval
    processing and rename the print_interval to process_interval
    and process_interval to __process_interval

    jirka

    > +
    > static void enable_counters(void)
    > {
    > if (stat_config.initial_delay)
    > @@ -611,6 +628,7 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
    > struct affinity affinity;
    > int i, cpu;
    > bool second_pass = false;
    > + bool stop = false;
    >
    > if (interval) {
    > ts.tv_sec = interval / USEC_PER_MSEC;
    > @@ -805,17 +823,11 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
    > psignal(WTERMSIG(status), argv[0]);
    > } else {
    > enable_counters();
    > - while (!done) {
    > + while (!done && !stop) {
    > nanosleep(&ts, NULL);
    > if (!is_target_alive(&target, evsel_list->core.threads))
    > break;
    > - if (timeout)
    > - break;
    > - if (interval) {
    > - process_interval();
    > - if (interval_count && !(--times))
    > - break;
    > - }
    > + stop = process_timeout(timeout, interval, &times);
    > }
    > }
    >
    > --
    > 2.24.1
    >
    >

    \
     
     \ /
      Last update: 2020-06-23 16:57    [W:4.032 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site