The branch main has been updated by olce:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=de78657a3aef3c2efbcbdf9ea73a95283c91fab0

commit de78657a3aef3c2efbcbdf9ea73a95283c91fab0
Author:     Olivier Certner <o...@freebsd.org>
AuthorDate: 2024-02-29 18:10:58 +0000
Commit:     Olivier Certner <o...@freebsd.org>
CommitDate: 2025-06-18 02:07:59 +0000

    runq: runq_check(): Re-implement on top of runq_findq()
    
    Remove one more loop and duplicated code, with the benefit of less
    instruction cache pollution at the expense of a few cycles more for the
    function calls and computing 'idx' (however, this gives a better
    diagnostic message).
    
    Reviewed by:    kib
    MFC after:      1 month
    Event:          Kitchener-Waterloo Hackathon 202506
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D45387
---
 sys/kern/kern_switch.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/sys/kern/kern_switch.c b/sys/kern/kern_switch.c
index a321aecc55fb..59925c10c30d 100644
--- a/sys/kern/kern_switch.c
+++ b/sys/kern/kern_switch.c
@@ -445,17 +445,15 @@ runq_findq(struct runq *const rq)
 bool
 runq_not_empty(struct runq *rq)
 {
-       struct rq_status *rqs;
+       int idx;
 
-       rqs = &rq->rq_status;
-       for (int i = 0; i < RQSW_NB; i++)
-               if (rqs->rq_sw[i] != 0) {
-                       CTR2(KTR_RUNQ, "runq_not_empty: bits=%#x i=%d",
-                           rqs->rq_sw[i], i);
-                       return (true);
-               }
-       CTR0(KTR_RUNQ, "runq_not_empty: empty");
+       idx = runq_findq(rq);
+       if (idx != -1) {
+               CTR1(KTR_RUNQ, "runq_not_empty: idx=%d", idx);
+               return (true);
+       }
 
+       CTR0(KTR_RUNQ, "runq_not_empty: empty");
        return (false);
 }
 

Reply via email to