Mutex Probes
Mutexes enforce mutual exclusion to critical sections.
When a thread attempts to acquire a mutex held by another thread using mutex_lock(3C) or pthread_mutex_lock(3C), it will determine
if the owning thread is running on a different CPU. If it is, the acquiring
thread will spin for a short while waiting for the mutex
to become available. If the owner is not executing on another CPU, the acquiring
thread will block.
The four plockstat probes pertaining to mutexes are
listed in Table 11–20. For each
probe, arg0 contains a pointer to the mutex_t or pthread_mutex_t structure (these are identical types) that represents
the mutex.
Table 11-20 Mutex Probes
mutex-acquire
| Hold event probe that fires immediately after a mutex is acquired. arg1 contains a boolean value that indicates whether the acquisition
was recursive on a recursive mutex. arg2 indicates the
number of iterations that the acquiring thread spent spinning on this mutex. arg2 will be non-zero only if the mutex-spin probe
fired on this mutex acquisition.
|
mutex-block
| Contention event probe that fires before a thread blocks on a held mutex.
Both mutex-block and mutex-spin might
fire for a single lock acquisition.
|
mutex-spin
| Contention event probe that fires before a thread begins spinning on
a held mutex. Both mutex-block and mutex-spin might
fire for a single lock acquisition.
|
mutex-release
| Hold event probe that fires immediately after an mutex is released. arg1 contains a boolean value that indicates whether the event corresponds
to a recursive release on a recursive mutex.
|
mutex-error
| Error event probe that fires when an error is encountered on a mutex
operation. arg1 is the errno value for
the error encountered.
|
|