Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
glibc/nptl/DESIGN-systemtap-probes.txt
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
73 lines (67 sloc)
3.01 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
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 |