// // Copyright (c) 2014 Wind River Systems, Inc. // // SPDX-License-Identifier: Apache-2.0 // #include #include #include "fmLog.h" #include "fmMutex.h" bool CFmMutex::lock() { //FM_DEBUG_LOG("lock %X",cntx); return pthread_mutex_lock((pthread_mutex_t*)cntx)==0; } bool CFmMutex::unlock() { //FM_DEBUG_LOG("unlock %X",cntx); return pthread_mutex_unlock((pthread_mutex_t*)cntx)==0; } CFmMutex::CFmMutex() { cntx = NULL; //use recursive Mutex to allow one thread to lock it multiple times pthread_mutex_t tmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; pthread_mutex_t * pMutex = new pthread_mutex_t; if (pMutex!=NULL) { *pMutex = tmutex; cntx = pMutex; } } CFmMutex::~CFmMutex() { pthread_mutex_destroy((pthread_mutex_t*)cntx); delete ((pthread_mutex_t*)cntx); //safe if cntx is null cntx = NULL; }