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 */ 9*10465441SEvalZero #include "Mutex.h" 10*10465441SEvalZero 11*10465441SEvalZero using namespace rtthread; 12*10465441SEvalZero Mutex(const char * name)13*10465441SEvalZeroMutex::Mutex(const char *name) 14*10465441SEvalZero { 15*10465441SEvalZero rt_mutex_init(&mID, name, RT_IPC_FLAG_FIFO); 16*10465441SEvalZero } 17*10465441SEvalZero lock(int32_t millisec)18*10465441SEvalZerobool Mutex::lock(int32_t millisec) 19*10465441SEvalZero { 20*10465441SEvalZero rt_int32_t tick; 21*10465441SEvalZero 22*10465441SEvalZero if (millisec < 0) 23*10465441SEvalZero tick = -1; 24*10465441SEvalZero else 25*10465441SEvalZero tick = rt_tick_from_millisecond(millisec); 26*10465441SEvalZero 27*10465441SEvalZero return rt_mutex_take(&mID, tick) == RT_EOK; 28*10465441SEvalZero } 29*10465441SEvalZero trylock()30*10465441SEvalZerobool Mutex::trylock() 31*10465441SEvalZero { 32*10465441SEvalZero return lock(0); 33*10465441SEvalZero } 34*10465441SEvalZero unlock()35*10465441SEvalZerovoid Mutex::unlock() 36*10465441SEvalZero { 37*10465441SEvalZero rt_mutex_release(&mID); 38*10465441SEvalZero } 39*10465441SEvalZero ~Mutex()40*10465441SEvalZeroMutex::~Mutex() 41*10465441SEvalZero { 42*10465441SEvalZero rt_mutex_detach(&mID); 43*10465441SEvalZero } 44