• Adrian Hunter's avatar
    perf record: Fix done_fd wakeup event · a032ad87
    Adrian Hunter authored
    evlist__add_wakeup_eventfd() calls perf_evlist__add_pollfd() to add a
    non-perf-event to the evlist pollfds. Since commit 415ccb58
    ("perf record: Introduce thread specific data array") that doesn't work
    because evlist pollfs is not polled and done_fd is not duplicated into
    thread-data.
    
    Patch "perf record: Fix way of handling non-perf-event pollfds" added a new
    approach that ensures file descriptors like done_fd are handled correctly
    by flagging them as fdarray_flag__non_perf_event.
    
    Fix by flagging done_fd as fdarray_flag__non_perf_event.
    
    Example:
    
     Before:
    
      $ sleep 3 & perf record -vv -p $!
      ...
      thread_data[0x55f44bd34140]: pollfd[0] <- event_fd=5
      thread_data[0x55f44bd34140]: pollfd[1] <- event_fd=6
      thread_data[0x55f44bd34140]: pollfd[2] <- event_fd=7
      thread_data[0x55f44bd34140]: pollfd[3] <- event_fd=8
      thread_data[0x55f44bd34140]: pollfd[4] <- event_fd=9
      thread_data[0x55f44bd34140]: pollfd[5] <- event_fd=10
      thread_data[0x55f44bd34140]: pollfd[6] <- event_fd=11
      thread_data[0x55f44bd34140]: pollfd[7] <- event_fd=12
      ...
    
     After:
    
      $ sleep 3 & perf record -vv -p $!
      ...
      thread_data[0x55a8ded89140]: pollfd[0] <- event_fd=5
      thread_data[0x55a8ded89140]: pollfd[1] <- event_fd=6
      thread_data[0x55a8ded89140]: pollfd[2] <- event_fd=7
      thread_data[0x55a8ded89140]: pollfd[3] <- event_fd=8
      thread_data[0x55a8ded89140]: pollfd[4] <- event_fd=9
      thread_data[0x55a8ded89140]: pollfd[5] <- event_fd=10
      thread_data[0x55a8ded89140]: pollfd[6] <- event_fd=11
      thread_data[0x55a8ded89140]: pollfd[7] <- event_fd=12
      thread_data[0x55a8ded89140]: pollfd[8] <- non_perf_event fd=4
      ...
    
    This patch depends on "perf record: Fix way of handling non-perf-event
    pollfds".
    
    Fixes: 415ccb58 ("perf record: Introduce thread specific data array")
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20220824072814.16422-3-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    a032ad87
evlist.c 50.6 KB