sched: fix crash on ia64, introduce task_current()
authorDmitry Adamushko <dmitry.adamushko@gmail.com>
Tue, 18 Dec 2007 14:21:13 +0000 (15:21 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 18 Dec 2007 14:21:13 +0000 (15:21 +0100)
commit051a1d1afa47206e23ae03f781c6795ce870e3d5
tree6ce53c173a3a7582896504ecfc758e993455e5fb
parentc63a1190368771b8207d86c4217ae4afdf1cbd5e
sched: fix crash on ia64, introduce task_current()

Some services (e.g. sched_setscheduler(), rt_mutex_setprio() and
sched_move_task()) must handle a given task differently in case it's the
'rq->curr' task on its run-queue. The task_running() interface is not
suitable for determining such tasks for platforms with one of the
following options:

#define __ARCH_WANT_UNLOCKED_CTXSW
#define __ARCH_WANT_INTERRUPTS_ON_CTXSW

Due to the fact that it makes use of 'p->oncpu == 1' as a criterion but
such a task is not necessarily 'rq->curr'.

The detailed explanation is available here:
https://lists.linux-foundation.org/pipermail/containers/2007-December/009262.html

Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Tested-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Tested-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
kernel/sched.c