read_write_lock_posix.cc revision 0c4f26a46430b8c503c65f5cae1d2b6876d53e30
1// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/synchronization/read_write_lock.h"
6
7#include "base/logging.h"
8
9namespace base {
10namespace subtle {
11
12ReadWriteLock::ReadWriteLock() : native_handle_(PTHREAD_RWLOCK_INITIALIZER) {}
13
14ReadWriteLock::~ReadWriteLock() {
15  int result = pthread_rwlock_destroy(&native_handle_);
16  DCHECK_EQ(result, 0) << ". " << strerror(result);
17}
18
19void ReadWriteLock::ReadAcquire() {
20  int result = pthread_rwlock_rdlock(&native_handle_);
21  DCHECK_EQ(result, 0) << ". " << strerror(result);
22}
23
24void ReadWriteLock::ReadRelease() {
25  int result = pthread_rwlock_unlock(&native_handle_);
26  DCHECK_EQ(result, 0) << ". " << strerror(result);
27}
28
29void ReadWriteLock::WriteAcquire() {
30  int result = pthread_rwlock_wrlock(&native_handle_);
31  DCHECK_EQ(result, 0) << ". " << strerror(result);
32}
33
34void ReadWriteLock::WriteRelease() {
35  int result = pthread_rwlock_unlock(&native_handle_);
36  DCHECK_EQ(result, 0) << ". " << strerror(result);
37}
38
39}  // namespace subtle
40}  // namespace base
41