Fix formatting
[glibc.git] / nptl / DESIGN-systemtap-probes.txt
blob16d7c4513437207049e5fc163fa1153c8ff39b97
1 Systemtap is a dynamic tracing/instrumenting tool available on Linux. Probes
2 that are not fired at run time have close to zero overhead.
4 The following probes are available for NPTL:
6 Thread creation & Join Probes
7 =============================
8 pthread_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
13 pthread_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
17 pthread_join - probe for pthread_join
18              arg1 = thread ID
19 pthread_join_ret - probe for pthread_join return
20                  arg1 = thread ID
21                  arg2 = return value
23 Lock-related Probes
24 ===================
25 mutex_init    - probe for pthread_mutex_init
26               arg1 = address of mutex lock
27 mutex_acquired - probe for succ. return of pthread_mutex_lock
28                arg1 = address of mutex lock
29 mutex_timedlock_acquired - probe for succ. return of pthread_mutex_timedlock
30                          arg1 = address of mutex lock
31 mutex_entry   - probe for entry to the pthread_mutex_lock function
32               arg1 = address of mutex lock
33 mutex_timedlock_entry - probe for entry to the pthread_mutex_timedlock function
34                       arg1 = address of mutex lock, arg2 = address of timespec
35 mutex_release - probe for pthread_mutex_unlock after the successful release of a
36                 mutex lock
37               arg1 = address of mutex lock
38 mutex_destroy - probe for pthread_mutex_destroy
39               arg1 = address of mutex lock
41 wrlock_entry - probe for entry to the pthread_rwlock_wrlock function
42              arg1 = address of rw lock
43 rdlock_entry - probe for entry to the pthread_rwlock_rdlock function
44              arg1 = address of rw lock
46 rwlock_destroy - probe for pthread_rwlock_destroy
47                arg1 = address of rw lock
48 wrlock_acquire_write - probe for pthread_rwlock_wrlock (after getting the lock)
49                      arg1 = address of rw lock
50 rdlock_acquire_read - probe for pthread_rwlock_rdlock after successfully getting
51                       the lock
52                     arg1 = address of rw lock
53 rwlock_unlock - probe for pthread_rwlock_unlock
54               arg1 = address of rw lock
56 lll_lock_wait - probe in low-level (assembly language) locking code, only fired
57                 when futex/FUTEX_WAIT is called (i.e. when trying to acquire a
58                 contented lock)
59               arg1 = pointer to futex
60               arg2 = flags passed to the futex system call
61 lll_lock_wait_private - probe in low-level (assembly language) locking code,
62                         only fired when futex/FUTEX_WAIT is called (i.e. when
63                         trying to acquire a contented lock)
64                       arg1 = pointer to futex
66 lll_futex_wake - probe in low-level (assembly language) locking code, only fired
67                  when futex (FUTEX_WAKE) is called
68                arg1 = pointer to futex
69                arg2 = number of processes to wake
70                arg3 = additional flags
72 Condition variable Probes
73 =========================
74 cond_init - probe for pthread_cond_init
75           arg1 = condition
76           arg2 = attr
77 cond_destroy - probe for pthread_cond_destroy
78              arg1 = cond
79 cond_wait - probe for pthread_cond_wait
80           arg1 = condition
81           arg2 = mutex lock
82 cond_timedwait - probe for pthread_cond_timedwait
83                arg1 = condition
84                arg2 = mutex lock
85                arg3 = timespec
86 cond_signal - probe for pthread_cond_signal
87             arg1 = condition
88 cond_broadcast - probe for pthread_cond_broadcast
89                arg1 = condition