Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(524)

Side by Side Diff: base/memory/discardable_shared_memory.cc

Issue 2843113002: make base::SharedMemoryHandle a class on POSIX. (Closed)
Patch Set: Fix test error. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 DCHECK_EQ(locked_pages_.size(), locked_page_count_); 217 DCHECK_EQ(locked_pages_.size(), locked_page_count_);
218 #endif 218 #endif
219 219
220 // Always behave as if memory was purged when trying to lock a 0 byte segment. 220 // Always behave as if memory was purged when trying to lock a 0 byte segment.
221 if (!length) 221 if (!length)
222 return PURGED; 222 return PURGED;
223 223
224 // Pin pages if supported. 224 // Pin pages if supported.
225 #if defined(OS_ANDROID) 225 #if defined(OS_ANDROID)
226 SharedMemoryHandle handle = shared_memory_.handle(); 226 SharedMemoryHandle handle = shared_memory_.handle();
227 if (SharedMemory::IsHandleValid(handle)) { 227 if (handle.IsValid()) {
228 if (ashmem_pin_region( 228 if (ashmem_pin_region(handle.GetHandle(),
229 handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) { 229 AlignToPageSize(sizeof(SharedState)) + offset,
230 length)) {
230 return PURGED; 231 return PURGED;
231 } 232 }
232 } 233 }
233 #endif 234 #endif
234 235
235 return SUCCESS; 236 return SUCCESS;
236 } 237 }
237 238
238 void DiscardableSharedMemory::Unlock(size_t offset, size_t length) { 239 void DiscardableSharedMemory::Unlock(size_t offset, size_t length) {
239 DCHECK_EQ(AlignToPageSize(offset), offset); 240 DCHECK_EQ(AlignToPageSize(offset), offset);
240 DCHECK_EQ(AlignToPageSize(length), length); 241 DCHECK_EQ(AlignToPageSize(length), length);
241 242
242 // Calls to this function must be synchronized properly. 243 // Calls to this function must be synchronized properly.
243 DFAKE_SCOPED_LOCK(thread_collision_warner_); 244 DFAKE_SCOPED_LOCK(thread_collision_warner_);
244 245
245 // Zero for length means "everything onward". 246 // Zero for length means "everything onward".
246 if (!length) 247 if (!length)
247 length = AlignToPageSize(mapped_size_) - offset; 248 length = AlignToPageSize(mapped_size_) - offset;
248 249
249 DCHECK(shared_memory_.memory()); 250 DCHECK(shared_memory_.memory());
250 251
251 // Unpin pages if supported. 252 // Unpin pages if supported.
252 #if defined(OS_ANDROID) 253 #if defined(OS_ANDROID)
253 SharedMemoryHandle handle = shared_memory_.handle(); 254 SharedMemoryHandle handle = shared_memory_.handle();
254 if (SharedMemory::IsHandleValid(handle)) { 255 if (handle.IsValid()) {
255 if (ashmem_unpin_region( 256 if (ashmem_unpin_region(handle.GetHandle(),
256 handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) { 257 AlignToPageSize(sizeof(SharedState)) + offset,
258 length)) {
257 DPLOG(ERROR) << "ashmem_unpin_region() failed"; 259 DPLOG(ERROR) << "ashmem_unpin_region() failed";
258 } 260 }
259 } 261 }
260 #endif 262 #endif
261 263
262 size_t start = offset / base::GetPageSize(); 264 size_t start = offset / base::GetPageSize();
263 size_t end = start + length / base::GetPageSize(); 265 size_t end = start + length / base::GetPageSize();
264 DCHECK_LE(start, end); 266 DCHECK_LE(start, end);
265 DCHECK_LE(end, AlignToPageSize(mapped_size_) / base::GetPageSize()); 267 DCHECK_LE(end, AlignToPageSize(mapped_size_) / base::GetPageSize());
266 268
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 397
396 void DiscardableSharedMemory::Close() { 398 void DiscardableSharedMemory::Close() {
397 shared_memory_.Close(); 399 shared_memory_.Close();
398 } 400 }
399 401
400 Time DiscardableSharedMemory::Now() const { 402 Time DiscardableSharedMemory::Now() const {
401 return Time::Now(); 403 return Time::Now();
402 } 404 }
403 405
404 } // namespace base 406 } // namespace base
OLDNEW
« no previous file with comments | « base/BUILD.gn ('k') | base/memory/shared_memory.h » ('j') | base/memory/shared_memory_handle.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698