On Friday 09 December 2016 12:10 AM, Hari Bathini wrote:
Hi Peter,


Sorry for taking so long to respond...


On Thursday 24 November 2016 08:40 PM, Peter Zijlstra wrote:
On Thu, Nov 24, 2016 at 08:14:29PM +0530, Hari Bathini wrote:
@@ -862,6 +875,19 @@ enum perf_event_type {
       */
      PERF_RECORD_SWITCH_CPU_WIDE        = 15,
  +    /*
+     * struct {
+     *    struct perf_event_header    header;
+     *
+     *    u32                pid, tid;
+     *    u64                time;
pid,tid and time are already present in sample_id. Many of the 'legacy'
record have redundant information since we added sample_id, but most of
the new ones haven't and rely on sample_all being set.

I tried using pid/tid from sample data, but realized that pid/tid in event_id could be different from the one in sample data, at least for fork/namespaces events, since __perf_event_header__init_id( ) that updates the sample data
is getting the pid/tid of current task.

I am not sure if it is advisable to change __perf_event_header__init_id( ) for this..?


Hi Peter,

Adding task parameter to __perf_event_header__init_id( ) and doing something like..

        perf_event_pid(event, task ? task : current)
        perf_event_tid(event, task ? task : current)


Also, for synthesized events, sample_id is not updated currently. Working on it as that is needed if we want to relay on pid, tid values from sample_id. Let me know, if this is
what you had in mind or something else altogether..

Thanks
Hari

Reply via email to