Arjan van de Ven<arjan@xxxxxxxxxxxxxxx> writes:
+By using jiffies, I think we might miss events in drivers that are doing
+/**
+ * update_pm_runtime_accounting - Update the time accounting of power
states
+ * @dev: Device to update the accounting for
+ *
+ * In order to be able to have time accounting of the various power states
+ * (as used by programs such as PowerTOP to show the effectiveness of
runtime
+ * PM), we need to track the time spent in each state.
+ * update_pm_runtime_accounting must be called each time before the
+ * runtime_status field is updated, to account the time in the old state
+ * correctly.
+ */
+void update_pm_runtime_accounting(struct device *dev)
+{
+ unsigned long now = jiffies;
+ int delta;
+
+ delta = now - dev->power.accounting_timestamp;
+
+ if (delta< 0)
+ delta = 0;
+
+ dev->power.accounting_timestamp = now;
+
+ if (dev->power.disable_depth> 0)
+ return;
+
+ if (dev->power.runtime_status == RPM_SUSPENDED)
+ dev->power.suspended_jiffies += delta;
+ else
+ dev->power.active_jiffies += delta;
+}
runtime PM transitions in short bursts. On embedded systems with slow
HZ, there could potentially be lots of transitions between ticks.
It would be nicer to use clocksource-based time so transitions between
jiffies could still be factored into the accounting.