140 lines
2.8 KiB
C++
140 lines
2.8 KiB
C++
/*
|
|
* Copyright@ Samsung Electronics Co. LTD
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*!
|
|
* \file ExynosMutex.h
|
|
* \brief header file for ExynosMutex
|
|
* \author Sangwoo, Park(sw5771.park@samsung.com)
|
|
* \date 2011/06/15
|
|
*
|
|
* <b>Revision History: </b>
|
|
* - 2010/06/15 : Sangwoo, Park(sw5771.park@samsung.com) \n
|
|
* Initial version
|
|
*
|
|
*/
|
|
|
|
#ifndef __EXYNOS_MUTEX_H__
|
|
#define __EXYNOS_MUTEX_H__
|
|
|
|
#ifdef __cplusplus
|
|
|
|
//! ExynosMutex
|
|
/*!
|
|
* \ingroup Exynos
|
|
*/
|
|
class ExynosMutex
|
|
{
|
|
public:
|
|
enum TYPE {
|
|
TYPE_BASE = 0,
|
|
TYPE_PRIVATE, //!< within this process
|
|
TYPE_SHARED, //!< within whole system
|
|
TYPE_MAX,
|
|
};
|
|
|
|
public:
|
|
//! Constructor.
|
|
ExynosMutex();
|
|
|
|
//! Destructor
|
|
virtual ~ExynosMutex();
|
|
|
|
//! Create Mutex
|
|
bool create(int type, char* name);
|
|
|
|
//! Destroy Mutex
|
|
void destroy(void);
|
|
|
|
//! Get Mutex created status
|
|
bool getCreatedStatus(void);
|
|
|
|
//! Lock Mutex
|
|
bool lock(void);
|
|
|
|
//! Unlock Mutex
|
|
bool unLock(void);
|
|
|
|
//! trylock Mutex
|
|
bool tryLock(void);
|
|
|
|
//! Get Mutex type
|
|
int getType(void);
|
|
|
|
private:
|
|
void *m_mutex;
|
|
bool m_flagCreate;
|
|
|
|
int m_type;
|
|
char m_name[128];
|
|
|
|
public:
|
|
//! Autolock
|
|
/*!
|
|
* \ingroup ExynosMutex
|
|
*/
|
|
class Autolock {
|
|
public:
|
|
//! Lock on constructor
|
|
inline Autolock(ExynosMutex& mutex) : mLock(mutex) { mLock.lock(); }
|
|
|
|
//! Lock on constructor
|
|
inline Autolock(ExynosMutex* mutex) : mLock(*mutex) { mLock.lock(); }
|
|
|
|
//! Unlock on destructor
|
|
inline ~Autolock() { mLock.unLock(); }
|
|
private:
|
|
ExynosMutex& mLock;
|
|
};
|
|
};
|
|
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum EXYNOS_MUTEX_TYPE {
|
|
EXYNOS_MUTEX_TYPE_BASE = 0,
|
|
EXYNOS_MUTEX_TYPE_PRIVATE, //!< within this process
|
|
EXYNOS_MUTEX_TYPE_SHARED, //!< within whole system
|
|
EXYNOS_MUTEX_TYPE_MAX,
|
|
};
|
|
|
|
void *exynos_mutex_create(
|
|
int type,
|
|
char *name);
|
|
|
|
bool exynos_mutex_destroy(
|
|
void *handle);
|
|
|
|
bool exynos_mutex_lock(
|
|
void *handle);
|
|
|
|
bool exynos_mutex_unlock(
|
|
void *handle);
|
|
|
|
bool exynos_mutex_trylock(
|
|
void *handle);
|
|
|
|
int exynos_mutex_type(
|
|
void *handle);
|
|
|
|
bool exynos_mutex_get_created_status(
|
|
void *handle);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //__EXYNOS_MUTEX_H__
|