2004-01-13 23:03:08

by Joe Korty

[permalink] [raw]
Subject: [PATCH] rq->curr==p not equivalent to task_running(rq,p)

task_running(rq,p) is equivalent to (rq->curr == p) only for some
architectures. Boot tested on i386.

Regards,
Joe

diff -Nua 2.6/kernel/sched.c.0 2.6/kernel/sched.c
--- 2.6/kernel/sched.c.0 2004-01-13 17:53:34.000000000 -0500
+++ 2.6/kernel/sched.c 2004-01-13 17:47:33.000000000 -0500
@@ -2062,7 +2062,7 @@
* our priority decreased, or if we are not currently running on
* this runqueue and our priority is higher than the current's
*/
- if (rq->curr == p) {
+ if (task_running(rq, p)) {
if (p->prio > oldprio)
resched_task(rq->curr);
} else if (p->prio < rq->curr->prio)


2004-01-13 23:49:23

by Robert Love

[permalink] [raw]
Subject: Re: [PATCH] rq->curr==p not equivalent to task_running(rq,p)

On Tue, 2004-01-13 at 18:02, Joe Korty wrote:

> task_running(rq,p) is equivalent to (rq->curr == p) only for some
> architectures. Boot tested on i386.

Oh, good catch.

Andrew, mind taking this?

Thanks, Joe.

Robert Love


diff -Nua 2.6/kernel/sched.c.0 2.6/kernel/sched.c
--- 2.6/kernel/sched.c.0 2004-01-13 17:53:34.000000000 -0500
+++ 2.6/kernel/sched.c 2004-01-13 17:47:33.000000000 -0500
@@ -2062,7 +2062,7 @@
* our priority decreased, or if we are not currently running on
* this runqueue and our priority is higher than the current's
*/
- if (rq->curr == p) {
+ if (task_running(rq, p)) {
if (p->prio > oldprio)
resched_task(rq->curr);
} else if (p->prio < rq->curr->prio)


2004-01-14 08:55:16

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] rq->curr==p not equivalent to task_running(rq,p)

* Joe Korty <[email protected]> wrote:

> task_running(rq,p) is equivalent to (rq->curr == p) only for some
> architectures. Boot tested on i386.

> - if (rq->curr == p) {
> + if (task_running(rq, p)) {

indeed - good catch. Andrew, please apply.

Ingo