Re: [PATCH 0/8] Suspend block api (version 8)

Matthew Garrett
2010-05-27T20:11:56Z

On Thu, May 27, 2010 at 08:53:33PM +0100, Alan Cox wrote:
> On Thu, 27 May 2010 20:29:26 +0100
> Matthew Garrett <mjg59@srcf.ucam.org> wrote:
> > But wakeup events won't be delivered to STOPped processes, and there's
>
> Try the following
>
> cat <pipe
> kill -STOP catpid
>
> echo "wombats are cool" > pipe
> kill -CONT catpid
>
> it will echo "wombats are cool"
>
> The event was not lost.

Not lost, but not delivered. So you need your policy agent to send
SIGCONT when you receive any wakeup event, which either means proxying
all your network traffic through your policy agent or having some
mechanism for alerting the policy agent whenever you leave the deep idle
state.

> > also the race of an application being in the middle of handling a wakeup
> > event when you send it the signal.
>
> sigmask()

Doesn't help - I may be hit by the signal between the poll() unblocking
and me having the opportunity to call sigmask().

--
Matthew Garrett | mjg59@srcf.ucam.org