diff options
| author | Meco Man <[email protected]> | 2021-02-25 09:14:19 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2021-02-25 09:14:19 +0800 |
| commit | 1ce20656602f57ccb7baa6b8420b9b9194ee7d45 (patch) | |
| tree | bf9d4ff869aaa65c8a5fc7ce393deb477dd518b6 /components/libc/compilers/armlibc/syscalls.c | |
| parent | bc28df8b350f2118f418b966df0843c7f2c02496 (diff) | |
[libc][armlibc] add multithreaded protection
Diffstat (limited to 'components/libc/compilers/armlibc/syscalls.c')
| -rw-r--r-- | components/libc/compilers/armlibc/syscalls.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/components/libc/compilers/armlibc/syscalls.c b/components/libc/compilers/armlibc/syscalls.c index d17460b413..8addb3e163 100644 --- a/components/libc/compilers/armlibc/syscalls.c +++ b/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(). * |
