summaryrefslogtreecommitdiffstats
path: root/src/include/thread.h
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-07-12 13:49:59 -0600
committerRaul Rangel <rrangel@chromium.org>2021-07-18 15:14:10 +0000
commitb29f9d471bade1cf6d5e0994af7ccf722ac65ef0 (patch)
treedf879543eaefe97ac9baa040f178879f7381ca4c /src/include/thread.h
parenta98d302fe9dcce13a1c60b4bdfaf2e713fd11b51 (diff)
downloadcoreboot-b29f9d471bade1cf6d5e0994af7ccf722ac65ef0.tar.gz
coreboot-b29f9d471bade1cf6d5e0994af7ccf722ac65ef0.tar.bz2
coreboot-b29f9d471bade1cf6d5e0994af7ccf722ac65ef0.zip
lib/thread: Add mutex
We need a way to protect shared resources. Since we are using cooperative multitasking the mutex implementation is pretty trivial. BUG=b:179699789 TEST=Verify thread lock and unlock. Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: Ife1ac95ec064ebcdd00fcaacec37a06ac52885ff Reviewed-on: https://review.coreboot.org/c/coreboot/+/56230 Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include/thread.h')
-rw-r--r--src/include/thread.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/include/thread.h b/src/include/thread.h
index 293a666dbde4..4bc04db00ae4 100644
--- a/src/include/thread.h
+++ b/src/include/thread.h
@@ -6,6 +6,10 @@
#include <bootstate.h>
#include <arch/cpu.h>
+struct thread_mutex {
+ bool locked;
+};
+
#if ENV_RAMSTAGE && CONFIG(COOP_MULTITASKING)
struct thread {
@@ -53,6 +57,9 @@ int thread_yield_microseconds(unsigned int microsecs);
void thread_coop_enable(void);
void thread_coop_disable(void);
+void thread_mutex_lock(struct thread_mutex *mutex);
+void thread_mutex_unlock(struct thread_mutex *mutex);
+
static inline void thread_init_cpu_info_non_bsp(struct cpu_info *ci)
{
ci->thread = NULL;
@@ -85,6 +92,10 @@ static inline void thread_coop_enable(void) {}
static inline void thread_coop_disable(void) {}
struct cpu_info;
static inline void thread_init_cpu_info_non_bsp(struct cpu_info *ci) { }
+
+static inline void thread_mutex_lock(struct thread_mutex *mutex) {}
+
+static inline void thread_mutex_unlock(struct thread_mutex *mutex) {}
#endif
#endif /* THREAD_H_ */