Chromium Code Reviews| 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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 333 bool DiscardableSharedMemory::IsMemoryResident() const { | 333 bool DiscardableSharedMemory::IsMemoryResident() const { |
| 334 DCHECK(shared_memory_.memory()); | 334 DCHECK(shared_memory_.memory()); |
| 335 | 335 |
| 336 SharedState result(subtle::NoBarrier_Load( | 336 SharedState result(subtle::NoBarrier_Load( |
| 337 &SharedStateFromSharedMemory(shared_memory_)->value.i)); | 337 &SharedStateFromSharedMemory(shared_memory_)->value.i)); |
| 338 | 338 |
| 339 return result.GetLockState() == SharedState::LOCKED || | 339 return result.GetLockState() == SharedState::LOCKED || |
| 340 !result.GetTimestamp().is_null(); | 340 !result.GetTimestamp().is_null(); |
| 341 } | 341 } |
| 342 | 342 |
| 343 bool DiscardableSharedMemory::IsMemoryLocked() const { | |
| 344 if (!shared_memory_.memory()) | |
|
reveman
2015/09/29 22:58:31
nit: Can this be a DCHECK as IsMemoryResident?
ssid
2015/09/30 19:27:21
Done.
| |
| 345 return false; | |
| 346 | |
| 347 SharedState result(subtle::NoBarrier_Load( | |
| 348 &SharedStateFromSharedMemory(shared_memory_)->value.i)); | |
| 349 | |
| 350 return result.GetLockState() == SharedState::LOCKED; | |
| 351 } | |
| 352 | |
| 343 void DiscardableSharedMemory::Close() { | 353 void DiscardableSharedMemory::Close() { |
| 344 shared_memory_.Close(); | 354 shared_memory_.Close(); |
| 345 } | 355 } |
| 346 | 356 |
| 347 #if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING) | 357 #if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING) |
| 348 void DiscardableSharedMemory::Shrink() { | 358 void DiscardableSharedMemory::Shrink() { |
| 349 #if defined(OS_POSIX) | 359 #if defined(OS_POSIX) |
| 350 SharedMemoryHandle handle = shared_memory_.handle(); | 360 SharedMemoryHandle handle = shared_memory_.handle(); |
| 351 if (!SharedMemory::IsHandleValid(handle)) | 361 if (!SharedMemory::IsHandleValid(handle)) |
| 352 return; | 362 return; |
| 353 | 363 |
| 354 // Truncate shared memory to size of SharedState. | 364 // Truncate shared memory to size of SharedState. |
| 355 if (HANDLE_EINTR(ftruncate(SharedMemory::GetFdFromSharedMemoryHandle(handle), | 365 if (HANDLE_EINTR(ftruncate(SharedMemory::GetFdFromSharedMemoryHandle(handle), |
| 356 AlignToPageSize(sizeof(SharedState)))) != 0) { | 366 AlignToPageSize(sizeof(SharedState)))) != 0) { |
| 357 DPLOG(ERROR) << "ftruncate() failed"; | 367 DPLOG(ERROR) << "ftruncate() failed"; |
| 358 return; | 368 return; |
| 359 } | 369 } |
| 360 mapped_size_ = 0; | 370 mapped_size_ = 0; |
| 361 #else | 371 #else |
| 362 NOTIMPLEMENTED(); | 372 NOTIMPLEMENTED(); |
| 363 #endif | 373 #endif |
| 364 } | 374 } |
| 365 #endif | 375 #endif |
| 366 | 376 |
| 367 Time DiscardableSharedMemory::Now() const { | 377 Time DiscardableSharedMemory::Now() const { |
| 368 return Time::Now(); | 378 return Time::Now(); |
| 369 } | 379 } |
| 370 | 380 |
| 371 } // namespace base | 381 } // namespace base |
| OLD | NEW |