Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Thu, 4 Apr 2002 17:43:54 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Thu, 4 Apr 2002 17:43:44 -0500 Received: from neon-gw-l3.transmeta.com ([63.209.4.196]:21774 "EHLO neon-gw.transmeta.com") by vger.kernel.org with ESMTP id ; Thu, 4 Apr 2002 17:43:31 -0500 Date: Thu, 4 Apr 2002 14:42:42 -0800 (PST) From: Linus Torvalds To: Andrew Morton cc: Roger Larsson , Robert Love , Dave Hansen , "Adam J. Richter" , Subject: Re: Patch: linux-2.5.8-pre1/kernel/exit.c change caused BUG() at boot time In-Reply-To: <3CACD5D3.B2DA02AE@zip.com.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org 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/