summaryrefslogtreecommitdiff
path: root/platforms/chibios/synchronization_util.c
diff options
context:
space:
mode:
authorStefan Kerkmann <karlk90@pm.me>2022-04-19 12:56:16 +0200
committerGitHub <noreply@github.com>2022-04-19 20:56:16 +1000
commit7712a286dccea029785976311433cf8673594f6f (patch)
tree775ae193b6fab345cce5e9046a3ff4116e83bc36 /platforms/chibios/synchronization_util.c
parent176ab1464964863637cc5d6a944dbdbe3f567aec (diff)
downloadqmk_firmware-7712a286dccea029785976311433cf8673594f6f.tar.gz
qmk_firmware-7712a286dccea029785976311433cf8673594f6f.zip
[Core] Use a mutex guard for split shared memory (#16647)
Diffstat (limited to 'platforms/chibios/synchronization_util.c')
-rw-r--r--platforms/chibios/synchronization_util.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/platforms/chibios/synchronization_util.c b/platforms/chibios/synchronization_util.c
new file mode 100644
index 0000000000..bc4a4e621f
--- /dev/null
+++ b/platforms/chibios/synchronization_util.c
@@ -0,0 +1,26 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "synchronization_util.h"
+#include "ch.h"
+
+#if defined(SPLIT_KEYBOARD)
+static MUTEX_DECL(SPLIT_SHARED_MEMORY_MUTEX);
+
+/**
+ * @brief Acquire exclusive access to the split keyboard shared memory, by
+ * locking the mutex guarding it. If the mutex is already held, the calling
+ * thread will be suspended until the mutex currently owning thread releases the
+ * mutex again.
+ */
+void split_shared_memory_lock(void) {
+ chMtxLock(&SPLIT_SHARED_MEMORY_MUTEX);
+}
+
+/**
+ * @brief Release the split shared memory mutex that has been acquired before.
+ */
+void split_shared_memory_unlock(void) {
+ chMtxUnlock(&SPLIT_SHARED_MEMORY_MUTEX);
+}
+#endif