xref: /nrf52832-nimble/rt-thread/components/libc/compilers/dlib/rmtx.c (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2015-01-28     Bernard      first version
9*10465441SEvalZero  */
10*10465441SEvalZero #include <rtthread.h>
11*10465441SEvalZero #include <yfuns.h>
12*10465441SEvalZero 
13*10465441SEvalZero /*
14*10465441SEvalZero  * for IAR compiler, we recommand to define _DLIB_THREAD_SUPPORT
15*10465441SEvalZero  * as 2 for dlib multi-thread support.
16*10465441SEvalZero  */
17*10465441SEvalZero 
18*10465441SEvalZero #if _DLIB_THREAD_SUPPORT
19*10465441SEvalZero typedef void* _Rmtx;
_Mtxinit(_Rmtx * m)20*10465441SEvalZero void _Mtxinit(_Rmtx *m)
21*10465441SEvalZero {
22*10465441SEvalZero     rt_mutex_t mutex;
23*10465441SEvalZero 
24*10465441SEvalZero     RT_ASSERT(m != RT_NULL);
25*10465441SEvalZero 
26*10465441SEvalZero     mutex = (rt_mutex_t)m;
27*10465441SEvalZero     rt_mutex_init(mutex, "iarMtx", RT_IPC_FLAG_FIFO);
28*10465441SEvalZero }
29*10465441SEvalZero 
_Mtxdst(_Rmtx * m)30*10465441SEvalZero void _Mtxdst(_Rmtx *m)
31*10465441SEvalZero {
32*10465441SEvalZero     rt_mutex_t mutex;
33*10465441SEvalZero 
34*10465441SEvalZero     RT_ASSERT(m != RT_NULL);
35*10465441SEvalZero 
36*10465441SEvalZero     mutex = (rt_mutex_t)m;
37*10465441SEvalZero     rt_mutex_detach(mutex);
38*10465441SEvalZero }
39*10465441SEvalZero 
_Mtxlock(_Rmtx * m)40*10465441SEvalZero void _Mtxlock(_Rmtx *m)
41*10465441SEvalZero {
42*10465441SEvalZero     rt_mutex_t mutex;
43*10465441SEvalZero 
44*10465441SEvalZero     RT_ASSERT(m != RT_NULL);
45*10465441SEvalZero 
46*10465441SEvalZero     mutex = (rt_mutex_t)m;
47*10465441SEvalZero     rt_mutex_take(mutex, RT_WAITING_FOREVER);
48*10465441SEvalZero }
49*10465441SEvalZero 
_Mtxunlock(_Rmtx * m)50*10465441SEvalZero void _Mtxunlock(_Rmtx *m)
51*10465441SEvalZero {
52*10465441SEvalZero     rt_mutex_t mutex;
53*10465441SEvalZero 
54*10465441SEvalZero     RT_ASSERT(m != RT_NULL);
55*10465441SEvalZero 
56*10465441SEvalZero     mutex = (rt_mutex_t)m;
57*10465441SEvalZero     rt_mutex_release(mutex);
58*10465441SEvalZero }
59*10465441SEvalZero #endif
60*10465441SEvalZero 
61