You are, of course, correct. Ultimately the only requirement we have
is that there exists a way for userspace to determine if the system
woke up because of a user-triggered event. The actual mechanism by
which this determination is made isn't something I feel strongly
about. The reason I had been focusing on exposing the actual wakeup
event to userspace is because classifying wakeup events as
user-triggered or not feels to me like a policy decision that should
be left to userspace. If the kernel maintainers are ok with doing
this work in the kernel instead and only exposing a binary yes/no bit
to userspace for user-triggered wakeups, that's perfectly fine because
it still meets our requirements.
Well, please see the message I've just sent.
All wakeup devices have a wakeup source object associated with them. In
principle, we can expose a "priority" attribute from that for user space to
set as it wants to. There may be two values of it, like "normal" and "high"
for example.
Then, what only remains is to introduce separate wakeup counts for the "high"
priority and "normal" priority wakeup sources and teach the power manager to
use them.
That leaves no policy in the kernel, but it actually has a chance to work.