blob: 6ce2b2d7e249d06e89f315127587d8f70d37e38c [file] [log] [blame]
tommi@webrtc.orgfe196992015-02-07 22:35:54 +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
11#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_
12#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_
13
14#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
15#include "webrtc/typedefs.h"
16
17#include <pthread.h>
18
19namespace webrtc {
20
21class RWLockPosix : public RWLockWrapper {
22 public:
23 static RWLockPosix* Create();
24 virtual ~RWLockPosix();
25
26 virtual void AcquireLockExclusive() OVERRIDE;
27 virtual void ReleaseLockExclusive() OVERRIDE;
28
29 virtual void AcquireLockShared() OVERRIDE;
30 virtual void ReleaseLockShared() OVERRIDE;
31
32 private:
33 RWLockPosix();
34 bool Init();
35
36 pthread_rwlock_t lock_;
37};
38
39} // namespace webrtc
40
41#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_RW_LOCK_POSIX_H_