> On 02-Feb-2023, at 6:20 AM, Arnaldo Carvalho de Melo <a...@kernel.org> wrote:
> 
> Em Tue, Jan 31, 2023 at 07:17:48PM +0530, Athira Rajeev escreveu:
>> While parsing the tracepoint events in parse_events_add_tracepoint()
>> function, code checks for HAVE_LIBTRACEEVENT support. This is needed
>> since libtraceevent is necessary for tracepoint. But while adding
>> probe points, check for LIBTRACEEVENT is not done in case of perf probe.
>> Hence, in environment with missing libtraceevent-devel, it is
>> observed that adding a probe point shows below message though it
>> can't be used via perf record.
> 
> Thanks, applied.
> 
> - Arnaldo

Thanks Arnaldo

Athira
> 
> 
>> Example:
>> Adding probe point:
>>      ./perf probe 'vfs_getname=getname_flags:72 pathname=result->name:string'
>>      Added new event:
>>        probe:vfs_getname    (on getname_flags:72 with 
>> pathname=result->name:string)
>> 
>>      You can now use it in all perf tools, such as:
>> 
>>              perf record -e probe:vfs_getname -aR sleep 1
>> 
>> But trying perf record:
>>      ./perf  record -e probe:vfs_getname -aR sleep 1
>>      event syntax error: 'probe:vfs_getname'
>>                              \___ unsupported tracepoint
>>      libtraceevent is necessary for tracepoint support
>>      Run 'perf list' for a list of valid events
>> 
>> The builtin tool like perf record needs libtraceevent to
>> parse tracefs. But still the probe can be used by enabling
>> via tracefs. Patch fixes the probe usage message to the user
>> based on presence of libtraceevent. With the fix,
>> 
>> # ./perf probe 'pmu:myprobe=schedule'
>> Added new event:
>>   pmu:myprobe          (on schedule)
>> 
>> perf is not linked with libtraceevent, to use the new probe you can use 
>> tracefs:
>> 
>>      cd /sys/kernel/tracing/
>>      echo 1 > events/pmu/myprobe/enable
>>      echo 1 > tracing_on
>>      cat trace_pipe
>>      Before removing the probe, echo 0 > events/pmu/myprobe/enable
>> 
>> Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com>
>> ---
>> tools/perf/builtin-probe.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>> 
>> diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
>> index ed73d0b89ca2..e72f6cea76f7 100644
>> --- a/tools/perf/builtin-probe.c
>> +++ b/tools/perf/builtin-probe.c
>> @@ -383,9 +383,18 @@ static int perf_add_probe_events(struct 
>> perf_probe_event *pevs, int npevs)
>> 
>>      /* Note that it is possible to skip all events because of blacklist */
>>      if (event) {
>> +#ifndef HAVE_LIBTRACEEVENT
>> +            pr_info("\nperf is not linked with libtraceevent, to use the 
>> new probe you can use tracefs:\n\n");
>> +            pr_info("\tcd /sys/kernel/tracing/\n");
>> +            pr_info("\techo 1 > events/%s/%s/enable\n", group, event);
>> +            pr_info("\techo 1 > tracing_on\n");
>> +            pr_info("\tcat trace_pipe\n");
>> +            pr_info("\tBefore removing the probe, echo 0 > 
>> events/%s/%s/enable\n", group, event);
>> +#else
>>              /* Show how to use the event. */
>>              pr_info("\nYou can now use it in all perf tools, such as:\n\n");
>>              pr_info("\tperf record -e %s:%s -aR sleep 1\n\n", group, event);
>> +#endif
>>      }
>> 
>> out_cleanup:
>> -- 
>> 2.39.0
>> 
> 
> -- 
> 
> - Arnaldo

Reply via email to