blob: 930e7cc1003acce42f3fcf60277cce648f69d990 [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
ajm@google.comb5c49ff2011-08-01 17:04:04 +000011#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_
12#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_
niklase@google.com470e71d2011-07-07 08:21:25 +000013
henrike@webrtc.org9f847232012-09-25 20:27:51 +000014#include "system_wrappers/interface/rw_lock_wrapper.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000015
16#include <pthread.h>
17
18namespace webrtc {
henrike@webrtc.org9f847232012-09-25 20:27:51 +000019
ajm@google.comb5c49ff2011-08-01 17:04:04 +000020class RWLockPosix : public RWLockWrapper
niklase@google.com470e71d2011-07-07 08:21:25 +000021{
22public:
henrike@webrtc.org9f847232012-09-25 20:27:51 +000023 static RWLockPosix* Create();
ajm@google.comb5c49ff2011-08-01 17:04:04 +000024 virtual ~RWLockPosix();
niklase@google.com470e71d2011-07-07 08:21:25 +000025
26 virtual void AcquireLockExclusive();
27 virtual void ReleaseLockExclusive();
28
29 virtual void AcquireLockShared();
30 virtual void ReleaseLockShared();
31
niklase@google.com470e71d2011-07-07 08:21:25 +000032private:
henrike@webrtc.org9f847232012-09-25 20:27:51 +000033 RWLockPosix();
34 bool Init();
35
niklase@google.com470e71d2011-07-07 08:21:25 +000036 pthread_rwlock_t _lock;
37};
niklase@google.com470e71d2011-07-07 08:21:25 +000038
henrike@webrtc.org9f847232012-09-25 20:27:51 +000039} // namespace webrtc
40
41#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_