1Systemtap is a dynamic tracing/instrumenting tool available on Linux. Probes 2that are not fired at run time have close to zero overhead. 3 4The following probes are available for NPTL: 5 6Thread creation & Join Probes 7============================= 8pthread_create - probe for pthread_create 9 arg1 = pointer (pthread_t*) to thread 10 arg2 = pointer (pthread_attr_t*) to attr 11 arg3 = pointer (void *) to start_routine 12 arg4 = arguments to start_routine 13pthread_start - probe for actual thread creation 14 arg1 = struct pthread (members include thread ID, process ID) 15 arg2 = address of start_routine 16 arg3 = pointer to the list of arguments 17pthread_join - probe for pthread_join 18 arg1 = thread ID 19pthread_join_ret - probe for pthread_join return 20 arg1 = thread ID 21 arg2 = return value 22 23Lock-related Probes 24=================== 25mutex_init - probe for pthread_mutex_init 26 arg1 = address of mutex lock 27mutex_acquired - probe for succ. return of pthread_mutex_lock 28 arg1 = address of mutex lock 29mutex_timedlock_acquired - probe for succ. return of pthread_mutex_timedlock 30 arg1 = address of mutex lock 31mutex_entry - probe for entry to the pthread_mutex_lock function 32 arg1 = address of mutex lock 33mutex_timedlock_entry - probe for entry to the pthread_mutex_timedlock function 34 arg1 = address of mutex lock, arg2 = address of timespec 35mutex_clocklock_entry - probe for entry to the pthread_mutex_clocklock function 36 arg1 = address of mutex lock, arg2 = clockid, 37 arg3 = address of timespec 38mutex_release - probe for pthread_mutex_unlock after the successful release of a 39 mutex lock 40 arg1 = address of mutex lock 41mutex_destroy - probe for pthread_mutex_destroy 42 arg1 = address of mutex lock 43 44wrlock_entry - probe for entry to the pthread_rwlock_wrlock function 45 arg1 = address of rw lock 46rdlock_entry - probe for entry to the pthread_rwlock_rdlock function 47 arg1 = address of rw lock 48 49rwlock_destroy - probe for pthread_rwlock_destroy 50 arg1 = address of rw lock 51wrlock_acquire_write - probe for pthread_rwlock_wrlock (after getting the lock) 52 arg1 = address of rw lock 53rdlock_acquire_read - probe for pthread_rwlock_rdlock after successfully getting 54 the lock 55 arg1 = address of rw lock 56rwlock_unlock - probe for pthread_rwlock_unlock 57 arg1 = address of rw lock 58 59Condition variable Probes 60========================= 61cond_init - probe for pthread_cond_init 62 arg1 = condition 63 arg2 = attr 64cond_destroy - probe for pthread_cond_destroy 65 arg1 = cond 66cond_wait - probe for pthread_cond_wait 67 arg1 = condition 68 arg2 = mutex lock 69cond_timedwait - probe for pthread_cond_timedwait 70 arg1 = condition 71 arg2 = mutex lock 72 arg3 = timespec 73cond_signal - probe for pthread_cond_signal 74 arg1 = condition 75cond_broadcast - probe for pthread_cond_broadcast 76 arg1 = condition 77