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 DCHECK(IsMemoryResident()); | |
reveman
2015/10/01 14:39:00
hm, I was just thinking we'd DCHECK(shared_memory_
ssid
2015/10/01 14:48:24
You told me to make it DCHECK(IsMemoryResident) in
reveman
2015/10/01 14:54:13
By "DCHECK as IsMemoryResident" I meant DCHECK in
| |
345 | |
346 SharedState result(subtle::NoBarrier_Load( | |
347 &SharedStateFromSharedMemory(shared_memory_)->value.i)); | |
348 | |
349 return result.GetLockState() == SharedState::LOCKED; | |
350 } | |
351 | |
343 void DiscardableSharedMemory::Close() { | 352 void DiscardableSharedMemory::Close() { |
344 shared_memory_.Close(); | 353 shared_memory_.Close(); |
345 } | 354 } |
346 | 355 |
347 #if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING) | 356 #if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING) |
348 void DiscardableSharedMemory::Shrink() { | 357 void DiscardableSharedMemory::Shrink() { |
349 #if defined(OS_POSIX) | 358 #if defined(OS_POSIX) |
350 SharedMemoryHandle handle = shared_memory_.handle(); | 359 SharedMemoryHandle handle = shared_memory_.handle(); |
351 if (!SharedMemory::IsHandleValid(handle)) | 360 if (!SharedMemory::IsHandleValid(handle)) |
352 return; | 361 return; |
353 | 362 |
354 // Truncate shared memory to size of SharedState. | 363 // Truncate shared memory to size of SharedState. |
355 if (HANDLE_EINTR(ftruncate(SharedMemory::GetFdFromSharedMemoryHandle(handle), | 364 if (HANDLE_EINTR(ftruncate(SharedMemory::GetFdFromSharedMemoryHandle(handle), |
356 AlignToPageSize(sizeof(SharedState)))) != 0) { | 365 AlignToPageSize(sizeof(SharedState)))) != 0) { |
357 DPLOG(ERROR) << "ftruncate() failed"; | 366 DPLOG(ERROR) << "ftruncate() failed"; |
358 return; | 367 return; |
359 } | 368 } |
360 mapped_size_ = 0; | 369 mapped_size_ = 0; |
361 #else | 370 #else |
362 NOTIMPLEMENTED(); | 371 NOTIMPLEMENTED(); |
363 #endif | 372 #endif |
364 } | 373 } |
365 #endif | 374 #endif |
366 | 375 |
367 Time DiscardableSharedMemory::Now() const { | 376 Time DiscardableSharedMemory::Now() const { |
368 return Time::Now(); | 377 return Time::Now(); |
369 } | 378 } |
370 | 379 |
371 } // namespace base | 380 } // namespace base |
OLD | NEW |