git: 81ddf56306ca - releng/14.1 - sched: Simplify sched_lend_user_prio_cond()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 14 May 2024 13:39:26 UTC
The branch releng/14.1 has been updated by olce:
URL: https://cgit.FreeBSD.org/src/commit/?id=81ddf56306ca46894baa376c4f58c4a52ce5809d
commit 81ddf56306ca46894baa376c4f58c4a52ce5809d
Author: Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2024-02-09 18:03:22 +0000
Commit: Olivier Certner <olce@FreeBSD.org>
CommitDate: 2024-05-14 13:37:42 +0000
sched: Simplify sched_lend_user_prio_cond()
If 'td_lend_user_pri' has the expected value, there is no need to check
the fields that sched_lend_user_prio() modifies, they either are already
good or soon will be ('td->td_lend_user_pri' has just been changed by
a concurrent update).
Reviewed by: kib
Approved by: emaste (mentor)
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D44050
(cherry picked from commit aeff15b392e68f5f193fff3bb01728b965cacc3a)
Approved by: emaste (mentor)
(cherry picked from commit b8b729e23cb91a77f3ca51df5100e2c85dfa7447)
Approved by: emaste (mentor)
Approved by: re (cperciva)
---
sys/kern/sched_4bsd.c | 12 +++---------
sys/kern/sched_ule.c | 10 ++--------
2 files changed, 5 insertions(+), 17 deletions(-)
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index f0fffeb08e2d..ff1e57746404 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -981,15 +981,9 @@ void
sched_lend_user_prio_cond(struct thread *td, u_char prio)
{
- if (td->td_lend_user_pri != prio)
- goto lend;
- if (td->td_user_pri != min(prio, td->td_base_user_pri))
- goto lend;
- if (td->td_priority != td->td_user_pri)
- goto lend;
- return;
-
-lend:
+ if (td->td_lend_user_pri == prio)
+ return;
+
thread_lock(td);
sched_lend_user_prio(td, prio);
thread_unlock(td);
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index ee1e0ab0b955..4b99f1c486bf 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -2007,15 +2007,9 @@ void
sched_lend_user_prio_cond(struct thread *td, u_char prio)
{
- if (td->td_lend_user_pri != prio)
- goto lend;
- if (td->td_user_pri != min(prio, td->td_base_user_pri))
- goto lend;
- if (td->td_priority != td->td_user_pri)
- goto lend;
- return;
+ if (td->td_lend_user_pri == prio)
+ return;
-lend:
thread_lock(td);
sched_lend_user_prio(td, prio);
thread_unlock(td);