[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Re: [PATCH] Fix freezing bug in curses console
From: |
Paul Brook |
Subject: |
Re: [Qemu-devel] Re: [PATCH] Fix freezing bug in curses console |
Date: |
Sun, 1 Mar 2009 13:03:37 +0000 |
User-agent: |
KMail/1.9.9 |
> > > 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.
Paul