Merge pull request #4385 from mysterywolf/mutex

[libc][armlibc] add multithreaded protection
This commit is contained in:
Bernard Xiong 2021-02-26 00:23:18 +08:00 committed by GitHub
commit 4f6fea18c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 0 deletions

View File

@ -13,6 +13,7 @@
* RT_USING_DFS is not defined * RT_USING_DFS is not defined
* 2020-02-13 Meco Man re-implement exit() and abort() * 2020-02-13 Meco Man re-implement exit() and abort()
* 2020-02-14 Meco Man implement _sys_tmpnam() * 2020-02-14 Meco Man implement _sys_tmpnam()
* 2020-02-25 Meco Man add multithreaded protection
*/ */
#include <string.h> #include <string.h>
@ -41,6 +42,36 @@ const char __stdin_name[] = "STDIN";
const char __stdout_name[] = "STDOUT"; const char __stdout_name[] = "STDOUT";
const char __stderr_name[] = "STDERR"; 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(). * required by fopen() and freopen().
* *