diff --git a/core/include/mutex.h b/core/include/mutex.h
index 0069108cc3902cfc1d56f88a22b100e98f857a3f..0f7c0fd8c91ad79c2d135dcfcfe30b9067a08bf6 100644
--- a/core/include/mutex.h
+++ b/core/include/mutex.h
@@ -49,6 +49,18 @@ typedef struct {
  */
 #define MUTEX_INIT { { NULL } }
 
+/**
+ * @brief Static initializer for mutex_t with a locked mutex
+ */
+#define MUTEX_INIT_LOCKED { { MUTEX_LOCKED } }
+
+/**
+ * @internal
+ * @brief This is the value of the mutex when locked and no threads are waiting
+ *        for it
+ */
+#define MUTEX_LOCKED ((void *)-1)
+
 /**
  * @brief Initializes a mutex object.
  * @details For initialization of variables use MUTEX_INIT instead.
diff --git a/core/mutex.c b/core/mutex.c
index 609ca2619916e89a157beb54e44c1aa8151fe6ae..434386fb25aee45266087ebdb852a43f80ad74e8 100644
--- a/core/mutex.c
+++ b/core/mutex.c
@@ -35,8 +35,6 @@
 #define ENABLE_DEBUG    (0)
 #include "debug.h"
 
-#define MUTEX_LOCKED ((void*)-1)
-
 int _mutex_lock(mutex_t *mutex, int blocking)
 {
     unsigned irqstate = irq_disable();