1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Copyright (C) 2012 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Encapsulate a mutex for thread synchronization. 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#pragma once 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <pthread.h> 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectclass Mutex 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectpublic: 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: Mutex 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Initialize member variables. 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: None. 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Mutex (); 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: ~Mutex 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Cleanup all resources. 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: None. 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ~Mutex (); 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: lock 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Block the thread and try lock the mutex. 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: None. 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void lock (); 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: unlock 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Unlock a mutex to unblock a thread. 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: None. 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project void unlock (); 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: tryLock 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Try to lock the mutex. 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: True if the mutex is locked. 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project bool tryLock (); 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /******************************************************************************* 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Function: nativeHandle 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Description: Get the handle of the mutex. 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** Returns: Handle of the mutex. 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ** 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *******************************************************************************/ 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t* nativeHandle (); 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectprivate: 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t mMutex; 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 107