mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-15 22:43:55 +00:00
of the TRACE_DEFINE_ENUM() macro that can be used by tracepoints.
Tracepoints have helper functions for the TP_printk() called
__print_symbolic() and __print_flags() that lets a numeric number be
displayed as a a human comprehensible text. What is placed in the
TP_printk() is also shown in the tracepoint format file such that
user space tools like perf and trace-cmd can parse the binary data
and express the values too. Unfortunately, the way the TRACE_EVENT()
macro works, anything placed in the TP_printk() will be shown pretty
much exactly as is. The problem arises when enums are used. That's
because unlike macros, enums will not be changed into their values
by the C pre-processor. Thus, the enum string is exported to the
format file, and this makes it useless for user space tools.
The TRACE_DEFINE_ENUM() solves this by converting the enum strings
in the TP_printk() format into their number, and that is what is
shown to user space. For example, the tracepoint tlb_flush currently
has this in its format file:
__print_symbolic(REC->reason,
{ TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" },
{ TLB_REMOTE_SHOOTDOWN, "remote shootdown" },
{ TLB_LOCAL_SHOOTDOWN, "local shootdown" },
{ TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" })
After adding:
TRACE_DEFINE_ENUM(TLB_FLUSH_ON_TASK_SWITCH);
TRACE_DEFINE_ENUM(TLB_REMOTE_SHOOTDOWN);
TRACE_DEFINE_ENUM(TLB_LOCAL_SHOOTDOWN);
TRACE_DEFINE_ENUM(TLB_LOCAL_MM_SHOOTDOWN);
Its format file will contain this:
__print_symbolic(REC->reason,
{ 0, "flush on task switch" },
{ 1, "remote shootdown" },
{ 2, "local shootdown" },
{ 3, "local mm shootdown" })
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAABAgAGBQJVLBTuAAoJEEjnJuOKh9ldjHMIALdRS755TXCZGOf0r7O2akOR
wMPeum7C+ae1mH+jCsJKUC0/jUfQKaMt/UxoHlipDgcGg8kD2jtGnGCw4Xlwvdsr
y4rFmcTRSl1mo0zDSsg6ujoupHlVYN0+JPjrd7S3cv/llJoY49zcanNLF7S2XLeM
dZCtWRLWYpBiWO68ai6AqJTnE/eGFIqBI048qb5Eg8dbK243SSeSIf9Ywhb+VsA+
aq6F7cWI/H6j4tbeza8tAN19dcwenDro5EfCDY8ARQHJu1f6Y3+DLf2imjkd6Aiu
JVAoGIjHIpI+djwCZC1u4gi4urjfOqYartrM3Q54tb3YWYqHeNqP2ASI2a4EpYk=
=Ixwt
-----END PGP SIGNATURE-----
Merge tag 'trace-v4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing updates from Steven Rostedt:
"Some clean ups and small fixes, but the biggest change is the addition
of the TRACE_DEFINE_ENUM() macro that can be used by tracepoints.
Tracepoints have helper functions for the TP_printk() called
__print_symbolic() and __print_flags() that lets a numeric number be
displayed as a a human comprehensible text. What is placed in the
TP_printk() is also shown in the tracepoint format file such that user
space tools like perf and trace-cmd can parse the binary data and
express the values too. Unfortunately, the way the TRACE_EVENT()
macro works, anything placed in the TP_printk() will be shown pretty
much exactly as is. The problem arises when enums are used. That's
because unlike macros, enums will not be changed into their values by
the C pre-processor. Thus, the enum string is exported to the format
file, and this makes it useless for user space tools.
The TRACE_DEFINE_ENUM() solves this by converting the enum strings in
the TP_printk() format into their number, and that is what is shown to
user space. For example, the tracepoint tlb_flush currently has this
in its format file:
__print_symbolic(REC->reason,
{ TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" },
{ TLB_REMOTE_SHOOTDOWN, "remote shootdown" },
{ TLB_LOCAL_SHOOTDOWN, "local shootdown" },
{ TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" })
After adding:
TRACE_DEFINE_ENUM(TLB_FLUSH_ON_TASK_SWITCH);
TRACE_DEFINE_ENUM(TLB_REMOTE_SHOOTDOWN);
TRACE_DEFINE_ENUM(TLB_LOCAL_SHOOTDOWN);
TRACE_DEFINE_ENUM(TLB_LOCAL_MM_SHOOTDOWN);
Its format file will contain this:
__print_symbolic(REC->reason,
{ 0, "flush on task switch" },
{ 1, "remote shootdown" },
{ 2, "local shootdown" },
{ 3, "local mm shootdown" })"
* tag 'trace-v4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (27 commits)
tracing: Add enum_map file to show enums that have been mapped
writeback: Export enums used by tracepoint to user space
v4l: Export enums used by tracepoints to user space
SUNRPC: Export enums in tracepoints to user space
mm: tracing: Export enums in tracepoints to user space
irq/tracing: Export enums in tracepoints to user space
f2fs: Export the enums in the tracepoints to userspace
net/9p/tracing: Export enums in tracepoints to userspace
x86/tlb/trace: Export enums in used by tlb_flush tracepoint
tracing/samples: Update the trace-event-sample.h with TRACE_DEFINE_ENUM()
tracing: Allow for modules to convert their enums to values
tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values
tracing: Update trace-event-sample with TRACE_SYSTEM_VAR documentation
tracing: Give system name a pointer
brcmsmac: Move each system tracepoints to their own header
iwlwifi: Move each system tracepoints to their own header
mac80211: Move message tracepoints to their own header
tracing: Add TRACE_SYSTEM_VAR to xhci-hcd
tracing: Add TRACE_SYSTEM_VAR to kvm-s390
tracing: Add TRACE_SYSTEM_VAR to intel-sst
...
|
||
|---|---|---|
| .. | ||
| whci | ||
| bcma-hcd.c | ||
| ehci-atmel.c | ||
| ehci-dbg.c | ||
| ehci-exynos.c | ||
| ehci-fsl.c | ||
| ehci-fsl.h | ||
| ehci-grlib.c | ||
| ehci-hcd.c | ||
| ehci-hub.c | ||
| ehci-mem.c | ||
| ehci-msm.c | ||
| ehci-mv.c | ||
| ehci-mxc.c | ||
| ehci-omap.c | ||
| ehci-orion.c | ||
| ehci-pci.c | ||
| ehci-platform.c | ||
| ehci-pmcmsp.c | ||
| ehci-ppc-of.c | ||
| ehci-ps3.c | ||
| ehci-q.c | ||
| ehci-sched.c | ||
| ehci-sead3.c | ||
| ehci-sh.c | ||
| ehci-spear.c | ||
| ehci-st.c | ||
| ehci-sysfs.c | ||
| ehci-tegra.c | ||
| ehci-tilegx.c | ||
| ehci-timer.c | ||
| ehci-w90x900.c | ||
| ehci-xilinx-of.c | ||
| ehci.h | ||
| fhci-dbg.c | ||
| fhci-hcd.c | ||
| fhci-hub.c | ||
| fhci-mem.c | ||
| fhci-q.c | ||
| fhci-sched.c | ||
| fhci-tds.c | ||
| fhci.h | ||
| fotg210-hcd.c | ||
| fotg210.h | ||
| fsl-mph-dr-of.c | ||
| fusbh200-hcd.c | ||
| fusbh200.h | ||
| hwa-hc.c | ||
| imx21-dbg.c | ||
| imx21-hcd.c | ||
| imx21-hcd.h | ||
| isp116x-hcd.c | ||
| isp116x.h | ||
| isp1362-hcd.c | ||
| isp1362.h | ||
| Kconfig | ||
| Makefile | ||
| max3421-hcd.c | ||
| ohci-at91.c | ||
| ohci-da8xx.c | ||
| ohci-dbg.c | ||
| ohci-exynos.c | ||
| ohci-hcd.c | ||
| ohci-hub.c | ||
| ohci-jz4740.c | ||
| ohci-mem.c | ||
| ohci-nxp.c | ||
| ohci-omap3.c | ||
| ohci-omap.c | ||
| ohci-pci.c | ||
| ohci-platform.c | ||
| ohci-ppc-of.c | ||
| ohci-ps3.c | ||
| ohci-pxa27x.c | ||
| ohci-q.c | ||
| ohci-s3c2410.c | ||
| ohci-sa1111.c | ||
| ohci-sm501.c | ||
| ohci-spear.c | ||
| ohci-st.c | ||
| ohci-tilegx.c | ||
| ohci-tmio.c | ||
| ohci.h | ||
| oxu210hp-hcd.c | ||
| oxu210hp.h | ||
| pci-quirks.c | ||
| pci-quirks.h | ||
| r8a66597-hcd.c | ||
| r8a66597.h | ||
| sl811_cs.c | ||
| sl811-hcd.c | ||
| sl811.h | ||
| ssb-hcd.c | ||
| u132-hcd.c | ||
| uhci-debug.c | ||
| uhci-grlib.c | ||
| uhci-hcd.c | ||
| uhci-hcd.h | ||
| uhci-hub.c | ||
| uhci-pci.c | ||
| uhci-platform.c | ||
| uhci-q.c | ||
| xhci-dbg.c | ||
| xhci-ext-caps.h | ||
| xhci-hub.c | ||
| xhci-mem.c | ||
| xhci-mvebu.c | ||
| xhci-mvebu.h | ||
| xhci-pci.c | ||
| xhci-plat.c | ||
| xhci-rcar.c | ||
| xhci-rcar.h | ||
| xhci-ring.c | ||
| xhci-trace.c | ||
| xhci-trace.h | ||
| xhci.c | ||
| xhci.h | ||