Re: [PATCH 1/8] PM: Add suspend block api.

Alan Stern
2010-05-05T21:12:00Z

On Wed, 5 May 2010, mark gross wrote:

> > > True, you need an ack back from user mode for when its ok to allow
> > > suspend to happen. This ack is device specific and needs to be custom
> > > built per product to its wake up sources.
> >
> > No and no. Nothing special is needed. All userspace needs to do is
> > remove the condition that led to the blocker being enabled initially --
> > which is exactly what userspace would do normally anyway.
>
> Oh, like tell the modem that user mode has handled the ring event and
> its ok to un-block?

No, that's not how it works. It would go like this:

The modem IRQ handler queues its event to the input subsystem.
As it does so the input subsystem enables a suspend blocker,
causing the system to stay awake after the IRQ is done.

The user program enables its own suspend blocker before reading
the input queue. When the queue is empty, the input subsystem
releases its suspend blocker.

When the user program finishes processing the event, it
releases its suspend blocker. Now the system can go back to
sleep.

At no point does the user program have to communicate anything to the
modem driver, and at no point does it have to do anything out of the
ordinary except to enable and disable a suspend blocker.

Alan Stern