lkml.org 
[lkml]   [2020]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v8 09/13] perf stat: implement control commands handling
    From
    Date

    On 25.06.2020 15:14, Jiri Olsa wrote:
    > On Wed, Jun 24, 2020 at 05:10:10PM +0300, Alexey Budankov wrote:
    >>
    >> On 23.06.2020 17:54, Jiri Olsa wrote:
    >>> On Wed, Jun 17, 2020 at 11:41:30AM +0300, Alexey Budankov wrote:
    >>>
    >>> SNIP
    >>>
    >>>>
    >>>> while (1) {
    >>>> if (forks)
    >>>> @@ -581,8 +617,17 @@ static int dispatch_events(bool forks, int timeout, int interval, int *times, st
    >>>> if (done || stop || child)
    >>>> break;
    >>>>
    >>>> - nanosleep(ts, NULL);
    >>>> - stop = process_timeout(timeout, interval, times);
    >>>> + clock_gettime(CLOCK_MONOTONIC, &time_start);
    >>>> + if (!(evlist__poll(evsel_list, time_to_sleep) > 0)) { /* poll timeout or EINTR */
    >>>> + stop = process_timeout(timeout, interval, times);
    >>>> + time_to_sleep = sleep_time;
    >>>> + } else { /* fd revent */
    >>>> + stop = process_evlist(evsel_list, interval, times);
    >>>> + clock_gettime(CLOCK_MONOTONIC, &time_stop);
    >>>> + diff_timespec(&time_diff, &time_stop, &time_start);
    >>>> + time_to_sleep -= time_diff.tv_sec * MSEC_PER_SEC +
    >>>> + time_diff.tv_nsec / NSEC_PER_MSEC;
    >>>
    >>> should we check time_to_sleep > time_diff first?
    >>
    >> Probably and if time_diff > time_to_sleep then time_to_sleep = 0 ?
    >
    > or extra call to process_timeout? if we dont want to call evlist_poll
    > with 0 timeout

    poll() man page says it is ok to call poll with 0 timeout so
    process_timeout() and initialization of time_to_sleep will be
    done in common flow.

    ~Alexey

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