summaryrefslogtreecommitdiff
path: root/io-module/mts_supercap.c
diff options
context:
space:
mode:
Diffstat (limited to 'io-module/mts_supercap.c')
-rw-r--r--io-module/mts_supercap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/io-module/mts_supercap.c b/io-module/mts_supercap.c
index e028408..6cd9841 100644
--- a/io-module/mts_supercap.c
+++ b/io-module/mts_supercap.c
@@ -74,6 +74,8 @@ static void supercap_worker(struct work_struct *ignored)
struct pid *vpid;
int running_on_cap = 0;
+ mutex_lock(&mts_io_mutex);
+
pin = gpio_pin_by_attr_name("power-fail");
if (pin) {
@@ -83,6 +85,7 @@ static void supercap_worker(struct work_struct *ignored)
if (supercap.pid > 0) {
vpid = find_vpid(supercap.pid);
}
+
if (vpid) {
if (running_on_cap == 0 && supercap.pwf_count == 0) {
schedule_delayed_work(&supercap_work, SUPERCAP_CHECK_INTERVAL);
@@ -109,6 +112,8 @@ static void supercap_worker(struct work_struct *ignored)
}
} /* vpid */
+ mutex_unlock(&mts_io_mutex);
+
schedule_delayed_work(&supercap_work, SUPERCAP_CHECK_INTERVAL);
}
@@ -117,7 +122,7 @@ void init_supercap_worker(void) {
supercap_worker(NULL);
}
-void cleanup_sepercap_worker(void) {
+void cleanup_supercap_worker(void) {
cancel_delayed_work_sync(&supercap_work);
}