Blame manual/probes.texi

Packit 6c4009
@node Internal Probes
Packit 6c4009
@c @node Internal Probes, Tunables, Threads, Top
Packit 6c4009
@c %MENU% Probes to monitor libc internal behavior
Packit 6c4009
@chapter Internal probes
Packit 6c4009
Packit 6c4009
In order to aid in debugging and monitoring internal behavior,
Packit 6c4009
@theglibc{} exposes nearly-zero-overhead SystemTap probes marked with
Packit 6c4009
the @code{libc} provider.
Packit 6c4009
Packit 6c4009
These probes are not part of the @glibcadj{} stable ABI, and they are
Packit 6c4009
subject to change or removal across releases.  Our only promise with
Packit 6c4009
regard to them is that, if we find a need to remove or modify the
Packit 6c4009
arguments of a probe, the modified probe will have a different name, so
Packit 6c4009
that program monitors relying on the old probe will not get unexpected
Packit 6c4009
arguments.
Packit 6c4009
Packit 6c4009
@menu
Packit 6c4009
* Memory Allocation Probes::  Probes in the memory allocation subsystem
Packit 6c4009
* Mathematical Function Probes::  Probes in mathematical functions
Packit 6c4009
* Non-local Goto Probes::  Probes in setjmp and longjmp
Packit 6c4009
@end menu
Packit 6c4009
Packit 6c4009
@node Memory Allocation Probes
Packit 6c4009
@section Memory Allocation Probes
Packit 6c4009
Packit 6c4009
These probes are designed to signal relatively unusual situations within
Packit 6c4009
the virtual memory subsystem of @theglibc{}.
Packit 6c4009
Packit 6c4009
@deftp Probe memory_sbrk_more (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered after the main arena is extended by calling
Packit 6c4009
@code{sbrk}.  Argument @var{$arg1} is the additional size requested to
Packit 6c4009
@code{sbrk}, and @var{$arg2} is the pointer that marks the end of the
Packit 6c4009
@code{sbrk} area, returned in response to the request.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_sbrk_less (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered after the size of the main arena is decreased by
Packit 6c4009
calling @code{sbrk}.  Argument @var{$arg1} is the size released by
Packit 6c4009
@code{sbrk} (the positive value, rather than the negative value passed
Packit 6c4009
to @code{sbrk}), and @var{$arg2} is the pointer that marks the end of
Packit 6c4009
the @code{sbrk} area, returned in response to the request.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_heap_new (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered after a new heap is @code{mmap}ed.  Argument
Packit 6c4009
@var{$arg1} is a pointer to the base of the memory area, where the
Packit 6c4009
@code{heap_info} data structure is held, and @var{$arg2} is the size of
Packit 6c4009
the heap.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_heap_free (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered @emph{before} (unlike the other sbrk and heap
Packit 6c4009
probes) a heap is completely removed via @code{munmap}.  Argument
Packit 6c4009
@var{$arg1} is a pointer to the heap, and @var{$arg2} is the size of the
Packit 6c4009
heap.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_heap_more (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered after a trailing portion of an @code{mmap}ed
Packit 6c4009
heap is extended.  Argument @var{$arg1} is a pointer to the heap, and
Packit 6c4009
@var{$arg2} is the new size of the heap.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_heap_less (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered after a trailing portion of an @code{mmap}ed
Packit 6c4009
heap is released.  Argument @var{$arg1} is a pointer to the heap, and
Packit 6c4009
@var{$arg2} is the new size of the heap.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_malloc_retry (size_t @var{$arg1})
Packit 6c4009
@deftpx Probe memory_realloc_retry (size_t @var{$arg1}, void *@var{$arg2})
Packit 6c4009
@deftpx Probe memory_memalign_retry (size_t @var{$arg1}, size_t @var{$arg2})
Packit 6c4009
@deftpx Probe memory_calloc_retry (size_t @var{$arg1})
Packit 6c4009
These probes are triggered when the corresponding functions fail to
Packit 6c4009
obtain the requested amount of memory from the arena in use, before they
Packit 6c4009
call @code{arena_get_retry} to select an alternate arena in which to
Packit 6c4009
retry the allocation.  Argument @var{$arg1} is the amount of memory
Packit 6c4009
requested by the user; in the @code{calloc} case, that is the total size
Packit 6c4009
computed from both function arguments.  In the @code{realloc} case,
Packit 6c4009
@var{$arg2} is the pointer to the memory area being resized.  In the
Packit 6c4009
@code{memalign} case, @var{$arg2} is the alignment to be used for the
Packit 6c4009
request, which may be stricter than the value passed to the
Packit 6c4009
@code{memalign} function.  A @code{memalign} probe is also used by functions
Packit 6c4009
@code{posix_memalign, valloc} and @code{pvalloc}.
Packit 6c4009
Packit 6c4009
Note that the argument order does @emph{not} match that of the
Packit 6c4009
corresponding two-argument functions, so that in all of these probes the
Packit 6c4009
user-requested allocation size is in @var{$arg1}.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_arena_retry (size_t @var{$arg1}, void *@var{$arg2})
Packit 6c4009
This probe is triggered within @code{arena_get_retry} (the function
Packit 6c4009
called to select the alternate arena in which to retry an allocation
Packit 6c4009
that failed on the first attempt), before the selection of an alternate
Packit 6c4009
arena.  This probe is redundant, but much easier to use when it's not
Packit 6c4009
important to determine which of the various memory allocation functions
Packit 6c4009
is failing to allocate on the first try.  Argument @var{$arg1} is the
Packit 6c4009
same as in the function-specific probes, except for extra room for
Packit 6c4009
padding introduced by functions that have to ensure stricter alignment.
Packit 6c4009
Argument @var{$arg2} is the arena in which allocation failed.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_arena_new (void *@var{$arg1}, size_t @var{$arg2})
Packit 6c4009
This probe is triggered when @code{malloc} allocates and initializes an
Packit 6c4009
additional arena (not the main arena), but before the arena is assigned
Packit 6c4009
to the running thread or inserted into the internal linked list of
Packit 6c4009
arenas.  The arena's @code{malloc_state} internal data structure is
Packit 6c4009
located at @var{$arg1}, within a newly-allocated heap big enough to hold
Packit 6c4009
at least @var{$arg2} bytes.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_arena_reuse (void *@var{$arg1}, void *@var{$arg2})
Packit 6c4009
This probe is triggered when @code{malloc} has just selected an existing
Packit 6c4009
arena to reuse, and (temporarily) reserved it for exclusive use.
Packit 6c4009
Argument @var{$arg1} is a pointer to the newly-selected arena, and
Packit 6c4009
@var{$arg2} is a pointer to the arena previously used by that thread.
Packit 6c4009
Packit 6c4009
This occurs within
Packit 6c4009
@code{reused_arena}, right after the mutex mentioned in probe
Packit 6c4009
@code{memory_arena_reuse_wait} is acquired; argument @var{$arg1} will
Packit 6c4009
point to the same arena.  In this configuration, this will usually only
Packit 6c4009
occur once per thread.  The exception is when a thread first selected
Packit 6c4009
the main arena, but a subsequent allocation from it fails: then, and
Packit 6c4009
only then, may we switch to another arena to retry that allocation, and
Packit 6c4009
for further allocations within that thread.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_arena_reuse_wait (void *@var{$arg1}, void *@var{$arg2}, void *@var{$arg3})
Packit 6c4009
This probe is triggered when @code{malloc} is about to wait for an arena
Packit 6c4009
to become available for reuse.  Argument @var{$arg1} holds a pointer to
Packit 6c4009
the mutex the thread is going to wait on, @var{$arg2} is a pointer to a
Packit 6c4009
newly-chosen arena to be reused, and @var{$arg3} is a pointer to the
Packit 6c4009
arena previously used by that thread.
Packit 6c4009
Packit 6c4009
This occurs within
Packit 6c4009
@code{reused_arena}, when a thread first tries to allocate memory or
Packit 6c4009
needs a retry after a failure to allocate from the main arena, there
Packit 6c4009
isn't any free arena, the maximum number of arenas has been reached, and
Packit 6c4009
an existing arena was chosen for reuse, but its mutex could not be
Packit 6c4009
immediately acquired.  The mutex in @var{$arg1} is the mutex of the
Packit 6c4009
selected arena.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_arena_reuse_free_list (void *@var{$arg1})
Packit 6c4009
This probe is triggered when @code{malloc} has chosen an arena that is
Packit 6c4009
in the free list for use by a thread, within the @code{get_free_list}
Packit 6c4009
function.  The argument @var{$arg1} holds a pointer to the selected arena.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered when function @code{mallopt} is called to change
Packit 6c4009
@code{malloc} internal configuration parameters, before any change to
Packit 6c4009
the parameters is made.  The arguments @var{$arg1} and @var{$arg2} are
Packit 6c4009
the ones passed to the @code{mallopt} function.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_mxfast (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_MXFAST}, and the requested
Packit 6c4009
value is in an acceptable range.  Argument @var{$arg1} is the requested
Packit 6c4009
value, and @var{$arg2} is the previous value of this @code{malloc}
Packit 6c4009
parameter.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_trim_threshold (int @var{$arg1}, int @var{$arg2}, int @var{$arg3})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_TRIM_THRESHOLD}.  Argument
Packit 6c4009
@var{$arg1} is the requested value, @var{$arg2} is the previous value of
Packit 6c4009
this @code{malloc} parameter, and @var{$arg3} is nonzero if dynamic
Packit 6c4009
threshold adjustment was already disabled.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_top_pad (int @var{$arg1}, int @var{$arg2}, int @var{$arg3})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_TOP_PAD}.  Argument
Packit 6c4009
@var{$arg1} is the requested value, @var{$arg2} is the previous value of
Packit 6c4009
this @code{malloc} parameter, and @var{$arg3} is nonzero if dynamic
Packit 6c4009
threshold adjustment was already disabled.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_mmap_threshold (int @var{$arg1}, int @var{$arg2}, int @var{$arg3})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_MMAP_THRESHOLD}, and the
Packit 6c4009
requested value is in an acceptable range.  Argument @var{$arg1} is the
Packit 6c4009
requested value, @var{$arg2} is the previous value of this @code{malloc}
Packit 6c4009
parameter, and @var{$arg3} is nonzero if dynamic threshold adjustment
Packit 6c4009
was already disabled.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_mmap_max (int @var{$arg1}, int @var{$arg2}, int @var{$arg3})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_MMAP_MAX}.  Argument
Packit 6c4009
@var{$arg1} is the requested value, @var{$arg2} is the previous value of
Packit 6c4009
this @code{malloc} parameter, and @var{$arg3} is nonzero if dynamic
Packit 6c4009
threshold adjustment was already disabled.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_perturb (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_PERTURB}.  Argument
Packit 6c4009
@var{$arg1} is the requested value, and @var{$arg2} is the previous
Packit 6c4009
value of this @code{malloc} parameter.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_arena_test (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_ARENA_TEST}, and the
Packit 6c4009
requested value is in an acceptable range.  Argument @var{$arg1} is the
Packit 6c4009
requested value, and @var{$arg2} is the previous value of this
Packit 6c4009
@code{malloc} parameter.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_arena_max (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered shortly after the @code{memory_mallopt} probe,
Packit 6c4009
when the parameter to be changed is @code{M_ARENA_MAX}, and the
Packit 6c4009
requested value is in an acceptable range.  Argument @var{$arg1} is the
Packit 6c4009
requested value, and @var{$arg2} is the previous value of this
Packit 6c4009
@code{malloc} parameter.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_mallopt_free_dyn_thresholds (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered when function @code{free} decides to adjust the
Packit 6c4009
dynamic brk/mmap thresholds.  Argument @var{$arg1} and @var{$arg2} are
Packit 6c4009
the adjusted mmap and trim thresholds, respectively.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_tunable_tcache_max_bytes (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{glibc.malloc.tcache_max}
Packit 6c4009
tunable is set.  Argument @var{$arg1} is the requested value, and
Packit 6c4009
@var{$arg2} is the previous value of this tunable.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_tunable_tcache_count (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{glibc.malloc.tcache_count}
Packit 6c4009
tunable is set.  Argument @var{$arg1} is the requested value, and
Packit 6c4009
@var{$arg2} is the previous value of this tunable.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe memory_tunable_tcache_unsorted_limit (int @var{$arg1}, int @var{$arg2})
Packit 6c4009
This probe is triggered when the
Packit 6c4009
@code{glibc.malloc.tcache_unsorted_limit} tunable is set.  Argument
Packit 6c4009
@var{$arg1} is the requested value, and @var{$arg2} is the previous
Packit 6c4009
value of this tunable.
Packit 6c4009
@end deftp
Packit 6c4009
Packit Bot 4c590a
@deftp Probe memory_tcache_double_free (void *@var{$arg1}, int @var{$arg2})
Packit Bot 4c590a
This probe is triggered when @code{free} determines that the memory
Packit Bot 4c590a
being freed has probably already been freed, and resides in the
Packit Bot 4c590a
per-thread cache.  Note that there is an extremely unlikely chance
Packit Bot 4c590a
that this probe will trigger due to random payload data remaining in
Packit Bot 4c590a
the allocated memory matching the key used to detect double frees.
Packit Bot 4c590a
This probe actually indicates that an expensive linear search of the
Packit Bot 4c590a
tcache, looking for a double free, has happened.  Argument @var{$arg1}
Packit Bot 4c590a
is the memory location as passed to @code{free}, Argument @var{$arg2}
Packit Bot 4c590a
is the tcache bin it resides in.
Packit Bot 4c590a
@end deftp
Packit Bot 4c590a
Packit 6c4009
@node Mathematical Function Probes
Packit 6c4009
@section Mathematical Function Probes
Packit 6c4009
Packit 6c4009
Some mathematical functions fall back to multiple precision arithmetic for
Packit 6c4009
some inputs to get last bit precision for their return values.  This multiple
Packit 6c4009
precision fallback is much slower than the default algorithms and may have a
Packit 6c4009
significant impact on application performance.  The systemtap probe markers
Packit 6c4009
described in this section may help you determine if your application calls
Packit 6c4009
mathematical functions with inputs that may result in multiple-precision
Packit 6c4009
arithmetic.
Packit 6c4009
Packit 6c4009
Unless explicitly mentioned otherwise, a precision of 1 implies 24 bits of
Packit 6c4009
precision in the mantissa of the multiple precision number.  Hence, a precision
Packit 6c4009
level of 32 implies 768 bits of precision in the mantissa.
Packit 6c4009
Packit 6c4009
@deftp Probe slowatan2 (int @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
Packit 6c4009
This probe is triggered when the @code{atan2} function is called with
Packit 6c4009
an input that results in multiple precision computation.  Argument
Packit 6c4009
@var{$arg1} is the precision with which computation succeeded.
Packit 6c4009
Arguments @var{$arg2} and @var{$arg3} are inputs to the @code{atan2}
Packit 6c4009
function and @var{$arg4} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowatan2_inexact (int @var{$arg1}, double @var{$arg2}, double @var{$arg3}, double @var{$arg4})
Packit 6c4009
This probe is triggered when the @code{atan} function is called with
Packit 6c4009
an input that results in multiple precision computation and none of
Packit 6c4009
the multiple precision computations result in an accurate result.
Packit 6c4009
Argument @var{$arg1} is the maximum precision with which computations
Packit 6c4009
were performed.  Arguments @var{$arg2} and @var{$arg3} are inputs to
Packit 6c4009
the @code{atan2} function and @var{$arg4} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowatan (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
Packit 6c4009
This probe is triggered when the @code{atan} function is called with
Packit 6c4009
an input that results in multiple precision computation.  Argument
Packit 6c4009
@var{$arg1} is the precision with which computation succeeded.
Packit 6c4009
Argument @var{$arg2} is the input to the @code{atan} function and
Packit 6c4009
@var{$arg3} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowatan_inexact (int @var{$arg1}, double @var{$arg2}, double @var{$arg3})
Packit 6c4009
This probe is triggered when the @code{atan} function is called with
Packit 6c4009
an input that results in multiple precision computation and none of
Packit 6c4009
the multiple precision computations result in an accurate result.
Packit 6c4009
Argument @var{$arg1} is the maximum precision with which computations
Packit 6c4009
were performed.  Argument @var{$arg2} is the input to the @code{atan}
Packit 6c4009
function and @var{$arg3} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowtan (double @var{$arg1}, double @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{tan} function is called with an
Packit 6c4009
input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function and @var{$arg2}
Packit 6c4009
is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowasin (double @var{$arg1}, double @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{asin} function is called with
Packit 6c4009
an input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function and @var{$arg2}
Packit 6c4009
is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowacos (double @var{$arg1}, double @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{acos} function is called with
Packit 6c4009
an input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function and @var{$arg2}
Packit 6c4009
is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowsin (double @var{$arg1}, double @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{sin} function is called with an
Packit 6c4009
input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function and @var{$arg2}
Packit 6c4009
is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowcos (double @var{$arg1}, double @var{$arg2})
Packit 6c4009
This probe is triggered when the @code{cos} function is called with an
Packit 6c4009
input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function and @var{$arg2}
Packit 6c4009
is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowsin_dx (double @var{$arg1}, double @var{$arg2}, double @var{$arg3})
Packit 6c4009
This probe is triggered when the @code{sin} function is called with an
Packit 6c4009
input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function, @var{$arg2} is
Packit 6c4009
the error bound of @var{$arg1} and @var{$arg3} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe slowcos_dx (double @var{$arg1}, double @var{$arg2}, double @var{$arg3})
Packit 6c4009
This probe is triggered when the @code{cos} function is called with an
Packit 6c4009
input that results in multiple precision computation with precision
Packit 6c4009
32.  Argument @var{$arg1} is the input to the function, @var{$arg2} is
Packit 6c4009
the error bound of @var{$arg1} and @var{$arg3} is the computed result.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@node Non-local Goto Probes
Packit 6c4009
@section Non-local Goto Probes
Packit 6c4009
Packit 6c4009
These probes are used to signal calls to @code{setjmp}, @code{sigsetjmp},
Packit 6c4009
@code{longjmp} or @code{siglongjmp}.
Packit 6c4009
Packit 6c4009
@deftp Probe setjmp (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
Packit 6c4009
This probe is triggered whenever @code{setjmp} or @code{sigsetjmp} is
Packit 6c4009
called.  Argument @var{$arg1} is a pointer to the @code{jmp_buf}
Packit 6c4009
passed as the first argument of @code{setjmp} or @code{sigsetjmp},
Packit 6c4009
@var{$arg2} is the second argument of @code{sigsetjmp} or zero if this
Packit 6c4009
is a call to @code{setjmp} and @var{$arg3} is a pointer to the return
Packit 6c4009
address that will be stored in the @code{jmp_buf}.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe longjmp (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
Packit 6c4009
This probe is triggered whenever @code{longjmp} or @code{siglongjmp}
Packit 6c4009
is called.  Argument @var{$arg1} is a pointer to the @code{jmp_buf}
Packit 6c4009
passed as the first argument of @code{longjmp} or @code{siglongjmp},
Packit 6c4009
@var{$arg2} is the return value passed as the second argument of
Packit 6c4009
@code{longjmp} or @code{siglongjmp} and @var{$arg3} is a pointer to
Packit 6c4009
the return address @code{longjmp} or @code{siglongjmp} will return to.
Packit 6c4009
Packit 6c4009
The @code{longjmp} probe is triggered at a point where the registers
Packit 6c4009
have not yet been restored to the values in the @code{jmp_buf} and
Packit 6c4009
unwinding will show a call stack including the caller of
Packit 6c4009
@code{longjmp} or @code{siglongjmp}.
Packit 6c4009
@end deftp
Packit 6c4009
Packit 6c4009
@deftp Probe longjmp_target (void *@var{$arg1}, int @var{$arg2}, void *@var{$arg3})
Packit 6c4009
This probe is triggered under the same conditions and with the same
Packit 6c4009
arguments as the @code{longjmp} probe.
Packit 6c4009
Packit 6c4009
The @code{longjmp_target} probe is triggered at a point where the
Packit 6c4009
registers have been restored to the values in the @code{jmp_buf} and
Packit 6c4009
unwinding will show a call stack including the caller of @code{setjmp}
Packit 6c4009
or @code{sigsetjmp}.
Packit 6c4009
@end deftp