| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/memory/discardable_shared_memory.h" | 5 #include "base/memory/discardable_shared_memory.h" |
| 6 | 6 |
| 7 #if defined(OS_POSIX) | 7 #if defined(OS_POSIX) |
| 8 #include <unistd.h> | 8 #include <unistd.h> |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 } | 153 } |
| 154 | 154 |
| 155 bool DiscardableSharedMemory::Unmap() { | 155 bool DiscardableSharedMemory::Unmap() { |
| 156 if (!shared_memory_.Unmap()) | 156 if (!shared_memory_.Unmap()) |
| 157 return false; | 157 return false; |
| 158 | 158 |
| 159 mapped_size_ = 0; | 159 mapped_size_ = 0; |
| 160 return true; | 160 return true; |
| 161 } | 161 } |
| 162 | 162 |
| 163 size_t DiscardableSharedMemory::LockedSize() const { |
| 164 if (!shared_memory_.memory()) |
| 165 return 0; |
| 166 |
| 167 SharedState result(subtle::NoBarrier_Load( |
| 168 &SharedStateFromSharedMemory(shared_memory_)->value.i)); |
| 169 |
| 170 return result.GetLockState() == SharedState::LOCKED |
| 171 ? locked_page_count_ * base::GetPageSize() |
| 172 : 0; |
| 173 } |
| 174 |
| 163 DiscardableSharedMemory::LockResult DiscardableSharedMemory::Lock( | 175 DiscardableSharedMemory::LockResult DiscardableSharedMemory::Lock( |
| 164 size_t offset, size_t length) { | 176 size_t offset, size_t length) { |
| 165 DCHECK_EQ(AlignToPageSize(offset), offset); | 177 DCHECK_EQ(AlignToPageSize(offset), offset); |
| 166 DCHECK_EQ(AlignToPageSize(length), length); | 178 DCHECK_EQ(AlignToPageSize(length), length); |
| 167 | 179 |
| 168 // Calls to this function must be synchronized properly. | 180 // Calls to this function must be synchronized properly. |
| 169 DFAKE_SCOPED_LOCK(thread_collision_warner_); | 181 DFAKE_SCOPED_LOCK(thread_collision_warner_); |
| 170 | 182 |
| 171 DCHECK(shared_memory_.memory()); | 183 DCHECK(shared_memory_.memory()); |
| 172 | 184 |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 NOTIMPLEMENTED(); | 374 NOTIMPLEMENTED(); |
| 363 #endif | 375 #endif |
| 364 } | 376 } |
| 365 #endif | 377 #endif |
| 366 | 378 |
| 367 Time DiscardableSharedMemory::Now() const { | 379 Time DiscardableSharedMemory::Now() const { |
| 368 return Time::Now(); | 380 return Time::Now(); |
| 369 } | 381 } |
| 370 | 382 |
| 371 } // namespace base | 383 } // namespace base |
| OLD | NEW |