DragonFly BSD
DragonFly kernel List (threaded) for 2004-01
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

chooseproc cpu affinity question


From: Peter Kadau <peter.kadau@xxxxxxxxxxxxxxxx>
Date: Wed, 14 Jan 2004 21:53:50 +0100

Hi !

I'm still on my way refactoring some of kern_switch.c and friends
and stumbled across this (IMHO) oddity.

Just wondering whether the check-only-for-the-next-one was intended...

Index: kern/kern_switch.c
===================================================================
RCS file: /local/dragonfly/src/sys/kern/kern_switch.c,v
retrieving revision 1.16
diff -u -r1.16 kern_switch.c
--- kern/kern_switch.c  30 Dec 2003 03:19:02 -0000      1.16
+++ kern/kern_switch.c  14 Jan 2004 20:33:21 -0000
@@ -171,13 +171,13 @@
         * This is a fallback check, setrunqueue() tries to wakeup the
         * correct cpu and is our front-line affinity.
         */
-       if (p->p_thread->td_gd != mycpu &&
-           (chkp = TAILQ_NEXT(p, p_procq)) != NULL
-       ) {
-               if (chkp->p_thread->td_gd == mycpu) {
-                       ++choose_affinity;
-                       p = chkp;
-               }
+       TAILQ_FOREACH(chkp, q, p_procq) {
+               if (chkp->p_thread->td_gd == mycpu)
+                       break;
+       }
+       if (p != chkp && TAILQ_NEXT(chkp, p_procq)) {
+               ++choose_affinity;
+               p = chkp;
        }
 #endif

Cheers
Peter

--
<peter.kadau@xxxxxxxxxxxxxxxx>

Campus der Max-Planck-Institute Tübingen
Netzwerk- und Systemadministration

Tel: +49 7071 601 598
Fax: +49 7071 601 616




[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]