Re: [PATCH 12/12] perf report: Add --task option to display monitored tasks

From: Arnaldo Carvalho de Melo
Date: Tue Jan 09 2018 - 08:05:41 EST


Em Tue, Jan 09, 2018 at 10:15:51AM +0100, Jiri Olsa escreveu:
> On Tue, Jan 09, 2018 at 10:56:07AM +0900, Namhyung Kim wrote:
>
> SNIP
>
> > > +static struct task *task_list(struct task *task, struct machine *machine)
> > > +{
> > > + struct thread *parent_thread, *thread = task->thread;
> > > + struct task *parent_task;
> > > +
> > > + /* Already listed. */
> > > + if (!list_empty(&task->list))
> > > + return NULL;
> > > +
> > > + /* Last one in the chain. */
> > > + if (thread->ppid == -1)
> > > + return task;
> > > +
> > > + parent_thread = machine__findnew_thread(machine, -1, thread->ppid);
> >
> > I think it should be machine__find_thread() since creating a new
> > thread at this stage would lack thread->priv anyway.
>
> ugh, that's right.. I tried to stay safe, but the NULL
> in priv would bring it down anyway
>
> Arnaldo,
> I already see changed version on top of your branch,
> please let me know if you make also this change or
> I should send v2

I can make the change, thanks!

Just to make sure we're on the same page, just this, right?

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 3685ac101b16..e60709fe31ed 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -633,9 +633,9 @@ static struct task *tasks_list(struct task *task, struct machine *machine)
if (thread->ppid == -1)
return task;

- parent_thread = machine__findnew_thread(machine, -1, thread->ppid);
+ parent_thread = machine__find_thread(machine, -1, thread->ppid);
if (!parent_thread)
- return ERR_PTR(-ENOMEM);
+ return ERR_PTR(-ENOENT);

parent_task = thread__priv(parent_thread);
list_add_tail(&task->list, &parent_task->children);