You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2018/11/07 21:15:12 UTC
[mynewt-core] 02/05: hw/battery: Lock mutex in `battery_init()`
This is an automated email from the ASF dual-hosted git repository.
ccollins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit f36eb4ea7ef452a40aa287fd819cb8bab79bf876
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Thu Nov 1 14:35:30 2018 -0700
hw/battery: Lock mutex in `battery_init()`
Prevent race condition when two tasks call `battery_init()`.
---
hw/battery/src/battery.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/battery/src/battery.c b/hw/battery/src/battery.c
index 4e09570..c8d4fc0 100644
--- a/hw/battery/src/battery.c
+++ b/hw/battery/src/battery.c
@@ -791,11 +791,14 @@ battery_init(struct os_dev *dev, void *arg)
OS_DEV_SETHANDLERS(dev, battery_open, battery_close);
+ os_mutex_pend(&battery_manager.bm_lock, OS_WAIT_FOREVER);
for (i = 0; i < BATTERY_MAX_COUNT; ++i) {
if (battery_manager.bm_batteries[i] == NULL) {
break;
}
}
+ os_mutex_release(&battery_manager.bm_lock);
+
assert(i < BATTERY_MAX_COUNT);
battery_manager.bm_batteries[i] = bat;