| /* |
| * 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__ |