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

Matthew Garrett
2010-05-07T21:03:04Z

On Fri, May 07, 2010 at 01:53:29PM -0700, Tony Lindgren wrote:

> So for example, if I leave ping running in a a terminal, do you
> have some way of preventing that from eating the battery?

It depends on policy. If all network packets generate wakeup events then
no, that will carry on eating battery. If ICMP doesn't generate a wakeup
event then the process won't be run.

> Do you just suspend the whole system anyways at some point,
> or do you have some other trick?

If nothing's holding any suspend blocks then the system will enter
suspend. If the packet generates a wakeup then the kernel would block
suspend until userspace has had the opportunity to do so. Once userspace
has handled the packet then it could release the block and the system
will immediately transition back into suspend.

Here's a different example. A process is waiting for a keypress, but
because it's badly written it's also drawing to the screen at 60 frames
per second and preventing the system from every going to idle. How do
you quiesce the system while still ensuring that the keypress will be
delivered to the application?

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