diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-05 16:18:59 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-02-05 18:15:36 -0500 |
commit | 75e5ce72679bbd207351313c2b6bd758eb394952 (patch) | |
tree | f45d04c398709bd5fed4f066376d933304b481ff | |
parent | e8d3eed1efa28366ab305aa56b7e5dcd2cb0e8db (diff) |
six locks: Lock contended tracepoints
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | kernel/locking/six.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/locking/six.c b/kernel/locking/six.c index 0614b9158570..41337a7faeb9 100644 --- a/kernel/locking/six.c +++ b/kernel/locking/six.c @@ -11,6 +11,8 @@ #include <linux/six.h> #include <linux/slab.h> +#include <trace/events/lock.h> + #ifdef DEBUG #define EBUG_ON(cond) BUG_ON(cond) #else @@ -498,11 +500,12 @@ static int __six_lock_type_slowpath(struct six_lock *lock, enum six_lock_type ty smp_mb__after_atomic(); } + trace_contention_begin(lock, 0); + lock_contended(&lock->dep_map, ip); + if (six_optimistic_spin(lock, type)) goto out; - lock_contended(&lock->dep_map, ip); - wait->task = current; wait->lock_want = type; wait->lock_acquired = false; @@ -569,6 +572,7 @@ out: &lock->state.counter); six_lock_wakeup(lock, old, SIX_LOCK_read); } + trace_contention_end(lock, 0); return ret; } |