Messages in this thread | | | Subject | Re: [tip:perfcounters/core] perf_counter: Use PID namespaces properly | From | Peter Zijlstra <> | Date | Tue, 02 Jun 2009 18:28:05 +0200 |
| |
On Tue, 2009-06-02 at 17:55 +0200, Oleg Nesterov wrote: > On 06/02, tip-bot for Peter Zijlstra wrote: > > > > +static u32 perf_counter_pid(struct perf_counter *counter, struct task_struct *p) > > +{ > > + /* > > + * only top level counters have the pid namespace they were created in > > + */ > > + if (counter->parent) > > + counter = counter->parent; > > + > > + return task_tgid_nr_ns(p, counter->ns); > > +} > > + > > +static u32 perf_counter_tid(struct perf_counter *counter, struct task_struct *p) > > +{ > > + /* > > + * only top level counters have the pid namespace they were created in > > + */ > > + if (counter->parent) > > + counter = counter->parent; > > + > > + return task_pid_nr_ns(p, counter->ns); > > Perhaps this should be > > return task_pid_nr_ns(p->group_leader); > > ?
That seems to be exactly what task_tgid_nr_ns() does.
so pid = task->group_leader->pids[PIDTYPE_PID].pid and tid = task->pids[PIDTYPE_PID].pid
> > + tid_entry.pid = perf_counter_pid(counter, current); > > + tid_entry.tid = perf_counter_tid(counter, current); > > > Otherwise we seem to always report .pid == .tid
tgid vs pid, I don't think they end up being equal. Are they?
| |