diff options
Diffstat (limited to 'os_wrappers/CriticalSection.cpp')
-rwxr-xr-x | os_wrappers/CriticalSection.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/os_wrappers/CriticalSection.cpp b/os_wrappers/CriticalSection.cpp new file mode 100755 index 0000000..2374565 --- /dev/null +++ b/os_wrappers/CriticalSection.cpp @@ -0,0 +1,66 @@ +/* + * CriticalSection.cpp + * + * Copyright (C) ST-Ericsson SA 2011 + * Authors: Srimanta Panda <srimanta.panda@stericsson.com>, + * Ola Borgelin <ola.borgelin@stericsson.com>, + * Karin Hedlund <karin.hedlund@stericsson.com>, + * Markus Andersson <markus.m.andersson@stericsson.com> for ST-Ericsson. + * License terms: 3-clause BSD license + * + */ + +/* + * @addtogroup OS Wrappers + * @{ + */ + +#include "CriticalSection.h" + +CriticalSection::CriticalSection() +{ +#ifdef _WIN32 + InitializeCriticalSection(&mutex_); +#else + pthread_mutex_init(&mutex_, NULL); +#endif +} + +CriticalSection::~CriticalSection() +{ +#ifdef _WIN32 + DeleteCriticalSection(&mutex_); +#else + pthread_mutex_destroy(&mutex_); +#endif +} + +void CriticalSection::enter() +{ +#ifdef _WIN32 + EnterCriticalSection(&mutex_); +#else + pthread_mutex_lock(&mutex_); +#endif +} + +void CriticalSection::leave() +{ +#ifdef _WIN32 + LeaveCriticalSection(&mutex_); +#else + pthread_mutex_unlock(&mutex_); +#endif +} + +CSLock::CSLock(CriticalSection* section): section_(section) +{ + section_->enter(); +} + +CSLock::~CSLock() +{ + section_->leave(); +} + +/* @} */ |