lkml.org 
[lkml]   [2018]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 8/8] perf session: Add comment for perf_session__register_idle_thread()
    Date
    Add a comment to perf_session__register_idle_thread() to bring attention to
    a pitfall with the idle task thread structure. The pitfall is that there
    should really be a 'struct thread' for the idle task of each cpu, but there
    is only one that can have pid == tid == 0.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    ---
    tools/perf/util/session.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
    index 78a067777144..5456c84c7dd1 100644
    --- a/tools/perf/util/session.c
    +++ b/tools/perf/util/session.c
    @@ -1527,6 +1527,13 @@ struct thread *perf_session__findnew(struct perf_session *session, pid_t pid)
    return machine__findnew_thread(&session->machines.host, -1, pid);
    }

    +/*
    + * Threads are identified by pid and tid, and the idle task has pid == tid == 0.
    + * So here a single thread is created for that, but actually there is a separate
    + * idle task per cpu, so there should be one 'struct thread' per cpu, but there
    + * is only 1. That causes problems for some tools, requiring workarounds. For
    + * example get_idle_thread() in builtin-sched.c, or thread_stack__per_cpu().
    + */
    int perf_session__register_idle_thread(struct perf_session *session)
    {
    struct thread *thread;
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-12-21 13:09    [W:2.882 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site