Browse Source

[libc][armlibc] add multithreaded protection

Meco Man 4 years ago
parent
commit
1ce2065660
1 changed files with 31 additions and 0 deletions
  1. 31 0
      components/libc/compilers/armlibc/syscalls.c

+ 31 - 0
components/libc/compilers/armlibc/syscalls.c

@@ -13,6 +13,7 @@
  *                             RT_USING_DFS is not defined
  * 2020-02-13     Meco Man     re-implement exit() and abort()
  * 2020-02-14     Meco Man     implement _sys_tmpnam()
+ * 2020-02-25     Meco Man     add multithreaded protection
  */
 
 #include <string.h>
@@ -41,6 +42,36 @@ const char __stdin_name[]  = "STDIN";
 const char __stdout_name[] = "STDOUT";
 const char __stderr_name[] = "STDERR";
 
+#ifdef RT_USING_HEAP
+int _mutex_initialize(rt_mutex_t *m)
+{
+    *m = rt_mutex_create("_mutex_", RT_IPC_FLAG_PRIO);
+    if(*m == RT_NULL)
+    {
+        return 0;
+    }
+    else
+    {
+        return 1;
+    }
+}
+
+void _mutex_acquire(rt_mutex_t *m)
+{
+    rt_mutex_take(*m, RT_WAITING_FOREVER);
+}
+
+void _mutex_release(rt_mutex_t *m)
+{
+    rt_mutex_release(*m);
+}
+
+void _mutex_free(rt_mutex_t *m)
+{
+    rt_mutex_delete(*m);
+}
+#endif
+
 /**
  * required by fopen() and freopen().
  *