From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
kernel/kernel/locking/mutex.c | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/kernel/kernel/locking/mutex.c b/kernel/kernel/locking/mutex.c
index 93020a8..943f6c3 100644
--- a/kernel/kernel/locking/mutex.c
+++ b/kernel/kernel/locking/mutex.c
@@ -568,9 +568,16 @@
struct ww_acquire_ctx *ww_ctx, struct mutex_waiter *waiter)
{
bool ret = true;
+ int cnt = 0;
+ bool time_out = false;
rcu_read_lock();
while (__mutex_owner(lock) == owner) {
+ trace_android_vh_mutex_opt_spin_start(lock, &time_out, &cnt);
+ if (time_out) {
+ ret = false;
+ break;
+ }
/*
* Ensure we emit the owner->on_cpu, dereference _after_
* checking lock->owner still matches owner. If that fails,
@@ -621,6 +628,7 @@
if (owner)
retval = owner->on_cpu && !vcpu_is_preempted(task_cpu(owner));
rcu_read_unlock();
+ trace_android_vh_mutex_can_spin_on_owner(lock, &retval);
/*
* If lock->owner is not set, the mutex has been released. Return true
@@ -702,6 +710,7 @@
if (!waiter)
osq_unlock(&lock->osq);
+ trace_android_vh_mutex_opt_spin_finish(lock, true);
return true;
@@ -710,6 +719,7 @@
osq_unlock(&lock->osq);
fail:
+ trace_android_vh_mutex_opt_spin_finish(lock, false);
/*
* If we fell out of the spin path because of need_resched(),
* reschedule now, before we try-lock the mutex. This avoids getting
@@ -750,12 +760,14 @@
*/
void __sched mutex_unlock(struct mutex *lock)
{
- trace_android_vh_record_mutex_lock_starttime(current, 0);
#ifndef CONFIG_DEBUG_LOCK_ALLOC
- if (__mutex_unlock_fast(lock))
+ if (__mutex_unlock_fast(lock)) {
+ trace_android_vh_record_mutex_lock_starttime(current, 0);
return;
+ }
#endif
__mutex_unlock_slowpath(lock, _RET_IP_);
+ trace_android_vh_record_mutex_lock_starttime(current, 0);
}
EXPORT_SYMBOL(mutex_unlock);
--
Gitblit v1.6.2