Skip to content

Commit 3b47ec6

Browse files
nordic-krchnashif
authored andcommitted
pm: device_runtime: Optimize pm_device_runtime_usage
There is no point in using lock or semaphore to read current usage counter as it may change after unlocking or giving back the semaphore. Value can only be trusted in the controlled environment (e.g. test). Signed-off-by: Krzysztof Chruściński <[email protected]>
1 parent e73bfb9 commit 3b47ec6

File tree

1 file changed

+1
-17
lines changed

1 file changed

+1
-17
lines changed

subsys/pm/device_runtime.c

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -563,25 +563,9 @@ bool pm_device_runtime_is_enabled(const struct device *dev)
563563

564564
int pm_device_runtime_usage(const struct device *dev)
565565
{
566-
struct pm_device *pm = dev->pm;
567-
uint32_t usage;
568-
569566
if (!pm_device_runtime_is_enabled(dev)) {
570567
return -ENOTSUP;
571568
}
572569

573-
if (atomic_test_bit(&dev->pm_base->flags, PM_DEVICE_FLAG_ISR_SAFE)) {
574-
struct pm_device_isr *pm_sync = dev->pm_isr;
575-
k_spinlock_key_t k = k_spin_lock(&pm_sync->lock);
576-
577-
usage = pm_sync->base.usage;
578-
579-
k_spin_unlock(&pm_sync->lock, k);
580-
} else {
581-
(void)k_sem_take(&pm->lock, K_FOREVER);
582-
usage = pm->base.usage;
583-
k_sem_give(&pm->lock);
584-
}
585-
586-
return usage;
570+
return dev->pm_base->usage;
587571
}

0 commit comments

Comments
 (0)