From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [Qemu-devel] Re: [PATCH] Fix freezing bug in curses console Date: Sun, 01 Mar 2009 08:07:07 -0600 Message-ID: <49AA968B.7000802@codemonkey.ws> References: <20090228212116.GL20640@shareable.org> <20090301113635.GA10538@redhat.com> <200903011303.38741.paul@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, "Daniel P. Berrange" , Matthew Bloch , kvm@vger.kernel.org To: Paul Brook Return-path: Received: from yw-out-2324.google.com ([74.125.46.29]:13630 "EHLO yw-out-2324.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752416AbZCAOHL (ORCPT ); Sun, 1 Mar 2009 09:07:11 -0500 Received: by yw-out-2324.google.com with SMTP id 5so1288261ywh.1 for ; Sun, 01 Mar 2009 06:07:09 -0800 (PST) In-Reply-To: <200903011303.38741.paul@codesourcery.com> Sender: kvm-owner@vger.kernel.org List-ID: Paul Brook wrote: >>>> I think it still suffers from the same race condition so today it >>>> wouldn't work. You could fix the bottom half scheduling though so that >>>> you could safely schedule a bottom half from a signal handler (using >>>> roughly the same trick). >>>> >>> Fwiw, it's perfectly sensible to have a single pipe which is shared by >>> all signal handlers, just used to say "check for work flags set". >>> >> And if you need the main loop to be able to distinguish signals coming >> out of the pipe, then just write the signum into the pipe as a byte, >> instead of a single dummy byte. Or even write the whole 'siginfo_t' >> struct passed to the signal handler, and read it out in sizeof(siginfo_t) >> sized chunks for processing. >> > > I don't think this will works. If the pipe buffer gets full the write will > either block or you'll loose signals. > > When using the pipe as a simple semaphore all you care about is the presence > or absence of data. It doesn't matter if subsequent writes loose data (e.g. > by not retrying a nonblocking write) as long as a write to an empty pipe > succeeds. > Yup. You need to use a global flag to distinguish the type of signal. Regards, Anthony Liguori > Paul > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >