Messages in this thread |  | | Date | Thu, 4 Apr 2002 14:42:42 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time |
| |
On Thu, 4 Apr 2002, Andrew Morton wrote: > Another approach would be: > > preempt_schedule() > { > current->state2 = current->state; > current->state = TASK_RUNNING; > schedule(); > current->state = current->state2; > }
Yes, but please no.
My current tree says
asmlinkage void preempt_schedule(void) { if (unlikely(preempt_get_count())) return; if (current->state != TASK_RUNNING) return; schedule(); }
and if people start getting latency problems due to loops with state != TASK_RUNNING, then I suspect we might just make "set_current_state()" check that case explicitly and do a conditional reschedule (ie make it the same as if we released a lock). That would be a hell of a lot cleaner, in my opinion.
Linus
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |