112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams/* 212b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * Copyright (C) 2009 The Android Open Source Project 312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * 412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 512b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * you may not use this file except in compliance with the License. 612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * You may obtain a copy of the License at 712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * 812b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 912b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * 1012b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * Unless required by applicable law or agreed to in writing, software 1112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1212b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * See the License for the specific language governing permissions and 1412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams * limitations under the License. 1512b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams */ 1612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 1712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams#include "rsMutex.h" 1812b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 1911496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehnamespace android { 2011496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsiehnamespace renderscript { 2112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 22afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukMutex::Mutex() { 2312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams} 2412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 25afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukMutex::~Mutex() { 2612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams pthread_mutex_destroy(&mMutex); 2712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams} 2812b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 29afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukbool Mutex::init() { 3044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes int status = pthread_mutex_init(&mMutex, nullptr); 3112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams if (status) { 32af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("Mutex::Mutex init failure"); 3312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return false; 3412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams } 3512b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return true; 3612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams} 3712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 38afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukbool Mutex::lock() { 3912b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams int status; 4012b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams status = pthread_mutex_lock(&mMutex); 4112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams if (status) { 42af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("Mutex: error %i locking.", status); 4312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return false; 4412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams } 4512b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return true; 4612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams} 4712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 48afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukbool Mutex::unlock() { 4912b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams int status; 5012b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams status = pthread_mutex_unlock(&mMutex); 5112b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams if (status) { 52af12ac6a08651464f8d823add667c706f993b587Steve Block ALOGE("Mutex error %i unlocking.", status); 5312b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return false; 5412b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams } 5512b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams return true; 5612b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams} 5712b14ae9fa34f4fd0bf21a2a4ac95a4864248fe9Jason Sams 5811496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsieh} // namespace renderscript 5911496ac131bb691edf5bdcab3029dceef5c1e4e1Chih-Hung Hsieh} // namespace android 60