| 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 |
| 11 #include <algorithm> | 11 #include <algorithm> |
| 12 | 12 |
| 13 #include "base/atomicops.h" | 13 #include "base/atomicops.h" |
| 14 #include "base/bits.h" |
| 14 #include "base/logging.h" | 15 #include "base/logging.h" |
| 15 #include "base/numerics/safe_math.h" | 16 #include "base/numerics/safe_math.h" |
| 16 #include "base/process/process_metrics.h" | 17 #include "base/process/process_metrics.h" |
| 17 | 18 |
| 18 #if defined(OS_ANDROID) | 19 #if defined(OS_ANDROID) |
| 19 #include "third_party/ashmem/ashmem.h" | 20 #include "third_party/ashmem/ashmem.h" |
| 20 #endif | 21 #endif |
| 21 | 22 |
| 22 namespace base { | 23 namespace base { |
| 23 namespace { | 24 namespace { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 UAtomicType u; | 83 UAtomicType u; |
| 83 } value; | 84 } value; |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 // Shared state is stored at offset 0 in shared memory segments. | 87 // Shared state is stored at offset 0 in shared memory segments. |
| 87 SharedState* SharedStateFromSharedMemory(const SharedMemory& shared_memory) { | 88 SharedState* SharedStateFromSharedMemory(const SharedMemory& shared_memory) { |
| 88 DCHECK(shared_memory.memory()); | 89 DCHECK(shared_memory.memory()); |
| 89 return static_cast<SharedState*>(shared_memory.memory()); | 90 return static_cast<SharedState*>(shared_memory.memory()); |
| 90 } | 91 } |
| 91 | 92 |
| 92 // Round up |size| to a multiple of alignment, which must be a power of two. | |
| 93 size_t Align(size_t alignment, size_t size) { | |
| 94 DCHECK_EQ(alignment & (alignment - 1), 0u); | |
| 95 return (size + alignment - 1) & ~(alignment - 1); | |
| 96 } | |
| 97 | |
| 98 // Round up |size| to a multiple of page size. | 93 // Round up |size| to a multiple of page size. |
| 99 size_t AlignToPageSize(size_t size) { | 94 size_t AlignToPageSize(size_t size) { |
| 100 return Align(base::GetPageSize(), size); | 95 return bits::Align(size, base::GetPageSize()); |
| 101 } | 96 } |
| 102 | 97 |
| 103 } // namespace | 98 } // namespace |
| 104 | 99 |
| 105 DiscardableSharedMemory::DiscardableSharedMemory() | 100 DiscardableSharedMemory::DiscardableSharedMemory() |
| 106 : mapped_size_(0), locked_page_count_(0) { | 101 : mapped_size_(0), locked_page_count_(0) { |
| 107 } | 102 } |
| 108 | 103 |
| 109 DiscardableSharedMemory::DiscardableSharedMemory( | 104 DiscardableSharedMemory::DiscardableSharedMemory( |
| 110 SharedMemoryHandle shared_memory_handle) | 105 SharedMemoryHandle shared_memory_handle) |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 NOTIMPLEMENTED(); | 362 NOTIMPLEMENTED(); |
| 368 #endif | 363 #endif |
| 369 } | 364 } |
| 370 #endif | 365 #endif |
| 371 | 366 |
| 372 Time DiscardableSharedMemory::Now() const { | 367 Time DiscardableSharedMemory::Now() const { |
| 373 return Time::Now(); | 368 return Time::Now(); |
| 374 } | 369 } |
| 375 | 370 |
| 376 } // namespace base | 371 } // namespace base |
| OLD | NEW |