On Sat, 5 Jun 2010, Arve Hjønnevåg wrote: > 2010/6/5 Thomas Gleixner <tglx@xxxxxxxxxxxxx>: > > On Sat, 5 Jun 2010, Arve Hjønnevåg wrote: > >> That is too simple. You also have to prevent A from being frozen while > >> it is processing the event or the result would be the same as if it > >> was frozen beforehand. > > > > The framework decides when to freeze the app in the first place (as > > your framework does now when it decides to suspend) > > > > So it knows whether the app is frozen or not. > > > > So it knows damend well whether it processed the event or not. > > > > Our user-space code is not single-threaded. So just because an app was > not frozen when you checked does not mean it will remain unfrozen. We > can use the same user-space wakelock api we have now to prevent > freezing apps instead of preventing suspend, but we loose any > advantage we get from freezing just a subset of processes this way. Errm. That does not matter whether its single threaded or not. And right, you have to prevent that it gets frozen while you are calling into it. But that does not change the fact that you can do finer grained power control even in the case when suspend is impossible because a background application has work to finish and does that without requiring interaction with the frozen part. That's what I pointed out in the first place and you just argue in circles why it is impossible to do so. Let me recapitulate: Full on state: No difference because everything runs Full suspend state: No difference because everything is down Screen off, background work active: Suspend blocker held by the active background work lets other applications which are unrelated consume CPU cycles and power. versus Frozen apps restrict the CPU cycles and power consumption to the background work (if there are no interactions with frozen tasks) and therefor save more power than the on/off approach. If your user space stack cannot be distangled that way, then it's a problem of your user space stack and not changing the fact, that a well designedd system allows you to do that. Any objections ? Thanks, tglx