@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
.
Example 3.10. Testing target variable available Example
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 }