diff options
| author | Bernard Xiong <[email protected]> | 2021-02-26 00:23:18 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-02-26 00:23:18 +0800 |
| commit | 4f6fea18c6dce1cfc31fed14b54aabb201ed24c7 (patch) | |
| tree | 7b757c173f56fbe61d1e73c9a4d95790da06140e /components/libc | |
| parent | f09592297ae27d7d89ce7e72fbd6e8a9f8f98a61 (diff) | |
| parent | 1ce20656602f57ccb7baa6b8420b9b9194ee7d45 (diff) | |
Merge pull request #4385 from mysterywolf/mutex
[libc][armlibc] add multithreaded protection
Diffstat (limited to 'components/libc')
| -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(). * |
