161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang/* 261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Copyright@ Samsung Electronics Co. LTD 361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Licensed under the Apache License, Version 2.0 (the "License"); 561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * you may not use this file except in compliance with the License. 661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * You may obtain a copy of the License at 761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * http://www.apache.org/licenses/LICENSE-2.0 961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 1061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Unless required by applicable law or agreed to in writing, software 1161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * distributed under the License is distributed on an "AS IS" BASIS, 1261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * See the License for the specific language governing permissions and 1461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * limitations under the License. 1561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang*/ 1661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 1761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang/*! 1861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * \file ExynosMutex.cpp 1961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * \brief source file for ExynosMutex 2061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * \author Sangwoo, Park(sw5771.park@samsung.com) 2161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * \date 2011/06/15 2261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 2361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * <b>Revision History: </b> 2461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * - 2010/06/15 : Sangwoo, Park(sw5771.park@samsung.com) \n 2561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * Initial version 2661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang * 2761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang */ 2861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 2961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang//#define LOG_NDEBUG 0 3061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#define LOG_TAG "ExynosMutex" 3161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <utils/Log.h> 3261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 3361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <utils/threads.h> 3461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changusing namespace android; 3561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 3661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <stdio.h> 3761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <stdarg.h> 3861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <stdlib.h> 3961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include <string.h> 4061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 4161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#include "ExynosMutex.h" 4261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 4361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang//#define EXYNOS_MUTEX_DEBUG 4461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 45c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho ChangExynosMutex::ExynosMutex() 4661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 4761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang m_mutex = NULL; 48c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang m_flagCreate = false; 49c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang m_type = TYPE_BASE; 50c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang} 51c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 52c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho ChangExynosMutex::~ExynosMutex() 53c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang{ 54c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == true) 55c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang this->destroy(); 56c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang} 57c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 58c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool ExynosMutex::create(int type, char* name) 59c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang{ 60c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == true) { 61c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::Already created", __func__); 62c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return false; 63c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang } 64c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 65c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang int androidMutexType = 0; 66c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 6761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang m_type = TYPE_BASE; 6861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 6961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang switch (type) { 7061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case TYPE_PRIVATE: 7161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang androidMutexType = Mutex::PRIVATE; 7261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang case TYPE_SHARED: 7461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang androidMutexType = Mutex::SHARED; 7561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang break; 7661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang default: 7753b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::unmatched type(%d) fail", __func__, type); 78c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return false; 7961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 8061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang m_mutex = new Mutex(androidMutexType, name); 8261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (m_mutex == NULL) { 8353b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::Mutex create fail", __func__); 84c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return false; 8561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 8661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 8761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang m_type = type; 8861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang strcpy(m_name, name); 89c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 90c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang m_flagCreate = true; 91c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 92c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return true; 9361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 9461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 95c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changvoid ExynosMutex::destroy(void) 9661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 97c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == false) { 98c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::Not yet created", __func__); 99c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return; 100c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang } 101c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 10261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (m_mutex) 10361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang delete ((Mutex *)m_mutex); 10461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang m_mutex = NULL; 105c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 106c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang m_flagCreate = false; 10761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 10861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 109c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool ExynosMutex::getCreatedStatus(void) 11061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 111c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return m_flagCreate; 112c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang} 11361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 114c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool ExynosMutex::lock(void) 115c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang{ 116c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == false) { 117c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::Not yet created", __func__); 11861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 11961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 12061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 121c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 122c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGD("%s::%s'lock() start", __func__, m_name); 123c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang#endif 124c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 12561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (((Mutex *)m_mutex)->lock() != 0) { 12653b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::m_core->lock() fail", __func__); 12761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 12861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 12961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 13153b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::%s'lock() end", __func__, m_name); 13261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 13361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 13461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return true; 13561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 13661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 137c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool ExynosMutex::unLock(void) 13861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 139c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == false) { 140c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::Not yet created", __func__); 141c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return false; 142c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang } 143c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 14461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 14553b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::%s'unlock() start", __func__, m_name); 14661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 14761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 14861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang ((Mutex *)m_mutex)->unlock(); 14961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 15153b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::%s'unlock() end", __func__, m_name); 15261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 15361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 15461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return true; 15561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 15661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 157c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool ExynosMutex::tryLock(void) 15861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 159c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (m_flagCreate == false) { 160c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::Not yet created", __func__); 161c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang return false; 162c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang } 163c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 16461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int ret = 0; 16561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 16661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 16753b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::%s'trylock() start", __func__, m_name); 16861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 16961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang ret = ((Mutex *)m_mutex)->tryLock(); 17161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#ifdef EXYNOS_MUTEX_DEBUG 17353b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGD("%s::%s'trylock() end", __func__, m_name); 17461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang#endif 17561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 17661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return (ret == 0) ? true : false; 17761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 17861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 179c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changint ExynosMutex::getType(void) 18061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 18161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return m_type; 18261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 18361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 18461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changvoid *exynos_mutex_create( 18561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang int type, 18661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang char *name) 18761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 188c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ExynosMutex *mutex = new ExynosMutex(); 189c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 190c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (mutex->create(type, name) == false) { 191c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ALOGE("%s::mutex->create() fail", __func__); 192c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang delete mutex; 193c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang mutex = NULL; 194c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang } 19561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return (void*)mutex; 19761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 19861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 19961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changbool exynos_mutex_destroy( 20061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 20161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 20261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 20353b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 20461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 20561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 20661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 207c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang if (((ExynosMutex *)handle)->getCreatedStatus() == true) 208c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang ((ExynosMutex *)handle)->destroy(); 209c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Chang 21061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang delete (ExynosMutex *)handle; 21161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return true; 21361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 21461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 21561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changbool exynos_mutex_lock( 21661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 21761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 21861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 21953b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 22061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 22161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 22261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return ((ExynosMutex *)handle)->lock(); 22461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 22661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 22761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changbool exynos_mutex_unlock( 22861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 22961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 23061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 23153b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 23261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 23361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 23461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 23561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return ((ExynosMutex *)handle)->unLock(); 23661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 23761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 23861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 23961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changbool exynos_mutex_trylock( 24061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 24161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 24261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 24353b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 24461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 24561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 24661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 24761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return ((ExynosMutex *)handle)->tryLock(); 24861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 24961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 25061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 25161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Changint exynos_mutex_get_type( 25261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 25361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 25461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 25553b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 25661bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 25761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 25861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 25961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return ((ExynosMutex *)handle)->getType(); 26061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 26161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 262c3e0af6f8857ca153c96d976dc58d1eab3001cecJiho Changbool exynos_mutex_get_created_status( 26361bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang void *handle) 26461bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang{ 26561bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang if (handle == NULL) { 26653b4197a2353461bda663a86887adb68f6325e43Dima Zavin ALOGE("%s::handle is null", __func__); 26761bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return false; 26861bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang } 26961bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 27061bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang return ((ExynosMutex *)handle)->getCreatedStatus(); 27161bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang} 27261bc154d7285f4dd0c28a7c74e9b3154445e209bJiho Chang 273