perf machine: Fix the value used for unknown pids
The value used for unknown pids cannot be zero because that is used by the "idle" task. Use -1 instead. Also handle the unknown pid case when creating map groups. Note that, threads with an unknown pid should not occur because fork (or synthesized) events precede the thread's existence. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1405332185-4050-2-git-send-email-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
57608cfd88
commit
1fcb876863
@@ -34,7 +34,7 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
|
||||
return -ENOMEM;
|
||||
|
||||
if (pid != HOST_KERNEL_ID) {
|
||||
struct thread *thread = machine__findnew_thread(machine, 0,
|
||||
struct thread *thread = machine__findnew_thread(machine, -1,
|
||||
pid);
|
||||
char comm[64];
|
||||
|
||||
@@ -286,7 +286,7 @@ static struct thread *__machine__findnew_thread(struct machine *machine,
|
||||
* the full rbtree:
|
||||
*/
|
||||
if (machine->last_match && machine->last_match->tid == tid) {
|
||||
if (pid && pid != machine->last_match->pid_)
|
||||
if (pid != -1 && pid != machine->last_match->pid_)
|
||||
machine->last_match->pid_ = pid;
|
||||
return machine->last_match;
|
||||
}
|
||||
@@ -297,7 +297,7 @@ static struct thread *__machine__findnew_thread(struct machine *machine,
|
||||
|
||||
if (th->tid == tid) {
|
||||
machine->last_match = th;
|
||||
if (pid && pid != th->pid_)
|
||||
if (pid != -1 && pid != th->pid_)
|
||||
th->pid_ = pid;
|
||||
return th;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user