@defined
makes it easier to handle those variations in the available target variables. The @defined
provides a test to see if a particular target variable is available. The result of this test can be used to select the appropriate expression.
memory.stp
tapset provides an probe event alias. Some version of the kernel functions being probed have an argument $flags
. When available, the $flags
argument is used to generate the local variable write_access
. The versions of the probed functions that do not have the $flags
argument have a $write
argument and that is used instead for the local variable write_access
.
probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?, kernel.function("handle_mm_fault@mm/memory.c") ? { name = "pagefault" write_access = (@defined($flags) ? $flags & FAULT_FLAG_WRITE : $write_access) address = $address }