mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 23:10:06 +00:00
90 lines
3.8 KiB
Plaintext
90 lines
3.8 KiB
Plaintext
|
Systemtap is a dynamic tracing/instrumenting tool available on Linux. Probes
|
||
|
that are not fired at run time have close to zero overhead.
|
||
|
|
||
|
The following probes are available for NPTL:
|
||
|
|
||
|
Thread creation & Join Probes
|
||
|
=============================
|
||
|
pthread_create - probe for pthread_create
|
||
|
arg1 = pointer (pthread_t*) to thread
|
||
|
arg2 = pointer (pthread_attr_t*) to attr
|
||
|
arg3 = pointer (void *) to start_routine
|
||
|
arg4 = arguments to start_routine
|
||
|
pthread_start - probe for actual thread creation
|
||
|
arg1 = struct pthread (members include thread ID, process ID)
|
||
|
arg2 = address of start_routine
|
||
|
arg3 = pointer to the list of arguments
|
||
|
pthread_join - probe for pthread_join
|
||
|
arg1 = thread ID
|
||
|
pthread_join_ret - probe for pthread_join return
|
||
|
arg1 = thread ID
|
||
|
arg2 = return value
|
||
|
|
||
|
Lock-related Probes
|
||
|
===================
|
||
|
mutex_init - probe for pthread_mutex_init
|
||
|
arg1 = address of mutex lock
|
||
|
mutex_acquired - probe for succ. return of pthread_mutex_lock
|
||
|
arg1 = address of mutex lock
|
||
|
mutex_timedlock_acquired - probe for succ. return of pthread_mutex_timedlock
|
||
|
arg1 = address of mutex lock
|
||
|
mutex_entry - probe for entry to the pthread_mutex_lock function
|
||
|
arg1 = address of mutex lock
|
||
|
mutex_timedlock_entry - probe for entry to the pthread_mutex_timedlock function
|
||
|
arg1 = address of mutex lock, arg2 = address of timespec
|
||
|
mutex_release - probe for pthread_mutex_unlock after the successful release of a
|
||
|
mutex lock
|
||
|
arg1 = address of mutex lock
|
||
|
mutex_destroy - probe for pthread_mutex_destroy
|
||
|
arg1 = address of mutex lock
|
||
|
|
||
|
wrlock_entry - probe for entry to the pthread_rwlock_wrlock function
|
||
|
arg1 = address of rw lock
|
||
|
rdlock_entry - probe for entry to the pthread_rwlock_rdlock function
|
||
|
arg1 = address of rw lock
|
||
|
|
||
|
rwlock_destroy - probe for pthread_rwlock_destroy
|
||
|
arg1 = address of rw lock
|
||
|
wrlock_acquire_write - probe for pthread_rwlock_wrlock (after getting the lock)
|
||
|
arg1 = address of rw lock
|
||
|
rdlock_acquire_read - probe for pthread_rwlock_rdlock after successfully getting
|
||
|
the lock
|
||
|
arg1 = address of rw lock
|
||
|
rwlock_unlock - probe for pthread_rwlock_unlock
|
||
|
arg1 = address of rw lock
|
||
|
|
||
|
lll_lock_wait - probe in low-level (assembly language) locking code, only fired
|
||
|
when futex/FUTEX_WAIT is called (i.e. when trying to acquire a
|
||
|
contented lock)
|
||
|
arg1 = pointer to futex
|
||
|
arg2 = flags passed to the futex system call
|
||
|
lll_lock_wait_private - probe in low-level (assembly language) locking code,
|
||
|
only fired when futex/FUTEX_WAIT is called (i.e. when
|
||
|
trying to acquire a contented lock)
|
||
|
arg1 = pointer to futex
|
||
|
|
||
|
lll_futex_wake - probe in low-level (assembly language) locking code, only fired
|
||
|
when futex (FUTEX_WAKE) is called
|
||
|
arg1 = pointer to futex
|
||
|
arg2 = number of processes to wake
|
||
|
arg3 = additional flags
|
||
|
|
||
|
Condition variable Probes
|
||
|
=========================
|
||
|
cond_init - probe for pthread_cond_init
|
||
|
arg1 = condition
|
||
|
arg2 = attr
|
||
|
cond_destroy - probe for pthread_cond_destroy
|
||
|
arg1 = cond
|
||
|
cond_wait - probe for pthread_cond_wait
|
||
|
arg1 = condition
|
||
|
arg2 = mutex lock
|
||
|
cond_timedwait - probe for pthread_cond_timedwait
|
||
|
arg1 = condition
|
||
|
arg2 = mutex lock
|
||
|
arg3 = timespec
|
||
|
cond_signal - probe for pthread_cond_signal
|
||
|
arg1 = condition
|
||
|
cond_broadcast - probe for pthread_cond_broadcast
|
||
|
arg1 = condition
|