linux/tools
Thomas Richter 1873f1547d perf probe: Add ustring support for perf probe command
Kernel commit 88903c4643 ("tracing/probe: Add ustring type for user-space string")
adds support for user-space strings when type 'ustring' is specified.

Here is an example using sysfs command line interface
for kprobes:

Function to probe:
  struct filename *
  getname_flags(const char __user *filename, int flags, int *empty)

Setup:
  # cd /sys/kernel/debug/tracing/
  # echo 'p:tmr1 getname_flags +0(%r2):ustring' > kprobe_events
  # cat events/kprobes/tmr1/format | fgrep print
  print fmt: "(%lx) arg1=\"%s\"", REC->__probe_ip, REC->arg1
  # echo 1 > events/kprobes/tmr1/enable
  # touch /tmp/111
  # echo 0 > events/kprobes/tmr1/enable
  # cat trace|fgrep /tmp/111
  touch-5846  [005] d..2 255520.717960: tmr1:\
	  (getname_flags+0x0/0x400) arg1="/tmp/111"

Doing the same with the perf tool fails.
Using type 'string' succeeds:
 # perf probe "vfs_getname=getname_flags:72 pathname=filename:string"
 Added new event:
   probe:vfs_getname (on getname_flags:72 with pathname=filename:string)
   ....
 # perf probe -d probe:vfs_getname
 Removed event: probe:vfs_getname

However using type 'ustring' fails (output before):
 # perf probe "vfs_getname=getname_flags:72 pathname=filename:ustring"
 Failed to write event: Invalid argument
   Error: Failed to add events.
 #

Fix this by adding type 'ustring' in function
convert_variable_type().

Using ustring succeeds (output after):
 # ./perf probe "vfs_getname=getname_flags:72 pathname=filename:ustring"
 Added new event:
   probe:vfs_getname (on getname_flags:72 with pathname=filename:ustring)

 You can now use it in all perf tools, such as:

	perf record -e probe:vfs_getname -aR sleep 1

 #

Note: This issue also exists on x86, it is not s390 specific.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: sumanthk@linux.ibm.com
Link: http://lore.kernel.org/lkml/20200120132011.64698-2-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2020-01-31 09:33:58 +01:00
..
accounting
arch tools arch x86: Sync asm/cpufeatures.h with the kernel sources 2019-12-02 15:20:05 -03:00
bpf bpftool: Fix printing incorrect pointer in btf_dump_ptr 2020-01-11 19:08:21 -08:00
build perf/ui/gtk: Fix gtk2 build 2020-01-14 12:40:33 -03:00
cgroup iocost_monitor: Report debt 2019-09-10 12:31:39 -06:00
debugging
firewire
firmware
gpio tools: gpio: Correctly add make dependencies for gpio_utils 2019-11-13 13:46:04 +01:00
hv tools: hv: add vmbus testing tool 2019-11-21 20:10:44 -05:00
iio tools: iio: Correctly add make dependency for iio_utils 2019-11-10 17:11:06 +00:00
include tools lib: Fix builds when glibc contains strlcpy() 2020-01-06 11:46:10 -03:00
io_uring
kvm/kvm_stat
laptop
leds leds: core: Add support for composing LED class device names 2019-07-25 20:07:52 +02:00
lib perf/core improvements and fixes: 2020-01-20 08:44:04 +01:00
memory-model tools/memory-model/Documentation: Add plain accesses and data races to explanation.txt 2019-10-05 11:59:44 -07:00
nfsd
objtool Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-11-26 15:04:47 -08:00
pci tools: PCI: Fix fd leakage 2019-10-29 12:04:18 +00:00
pcmcia
perf perf probe: Add ustring support for perf probe command 2020-01-31 09:33:58 +01:00
power platform-drivers-x86 for v5.5-1 2019-12-01 18:24:25 -08:00
scripts perf build: Do not use -Wshadow on gcc < 4.8 2019-07-23 09:04:54 -03:00
spi
testing selftests: mlxsw: qos_mc_aware: Fix mausezahn invocation 2020-01-15 04:16:30 -08:00
thermal/tmon
time
usb usbip: tools: fix fd leakage in the function of read_attr_usbip_status 2019-11-07 11:25:01 +01:00
virtio tools/virtio: xen stub 2019-10-13 09:38:27 -04:00
vm
wmi
Makefile tools: Keep list of tools in alphabetical order 2019-08-14 10:59:59 -03:00