On 8/7/20 1:43 PM, Arnaldo Carvalho de Melo wrote:
>> @@ -2958,9 +2967,10 @@ static int timehist_check_attr(struct perf_sched 
>> *sched,
>>  
>>  static int perf_sched__timehist(struct perf_sched *sched)
>>  {
>> -    const struct evsel_str_handler handlers[] = {
>> +    struct evsel_str_handler handlers[] = {
>>              { "sched:sched_switch",       timehist_sched_switch_event, },
>>              { "sched:sched_wakeup",       timehist_sched_wakeup_event, },
>> +            { "sched:sched_waking",       timehist_sched_wakeup_event, },
>>              { "sched:sched_wakeup_new",   timehist_sched_wakeup_event, },
>>      };
>>      const struct evsel_str_handler migrate_handlers[] = {
>> @@ -3018,6 +3028,11 @@ static int perf_sched__timehist(struct perf_sched 
>> *sched)
>>  
>>      setup_pager();
>>  
>> +    /* prefer sched_waking if it is captured */
>> +    if (perf_evlist__find_tracepoint_by_name(session->evlist,
>> +                                              "sched:sched_waking"))
>> +            handlers[1].handler = timehist_sched_wakeup_ignore;
>> +
> 
> 
> ouch, can't we figure out if its present and then don't ask for the
> wakeup one to be recorded?
> 

This is the analysis side. If someone recorded with sched:* we do not
want to analyze both sched_wakeup and sched_waking. Rather, it should
prefer the latter and ignore the former.

Reply via email to