diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2008-08-21 01:54:44 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-08-22 15:17:29 +0200 |
commit | f31e11d87a5d7601636710195891ba462ad99f11 (patch) | |
tree | 84cabe2eccab1bec8a5302f9a6105ebda1fec492 /include/scsi/scsi_device.h | |
parent | sched: do_wait_for_common: use signal_pending_state() (diff) | |
download | linux-f31e11d87a5d7601636710195891ba462ad99f11.tar.xz linux-f31e11d87a5d7601636710195891ba462ad99f11.zip |
wait_task_inactive(): don't consider task->nivcsw
If wait_task_inactive() returns success the task was deactivated. In that
case schedule() always increments ->nvcsw which alone can be used as a
"generation counter".
If the next call returns the same number, we can be sure that the task was
unscheduled. Otherwise, because we know that .on_rq == 0 again, ->nvcsw
should have been changed in between.
Q: perhaps it is better to do "ncsw = (p->nvcsw << 1) | 1" ? This
decreases the possibility of "was it unscheduled" false positive when
->nvcsw == 0.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/scsi/scsi_device.h')
0 files changed, 0 insertions, 0 deletions