Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/shared_memory.h" | 5 #include "base/shared_memory.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/sys_info.h" | |
| 8 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 9 | 10 |
| 10 namespace base { | 11 namespace base { |
| 11 | 12 |
| 12 SharedMemory::SharedMemory() | 13 SharedMemory::SharedMemory() |
| 13 : mapped_file_(NULL), | 14 : mapped_file_(NULL), |
| 14 memory_(NULL), | 15 memory_(NULL), |
| 15 read_only_(false), | 16 read_only_(false), |
| 16 created_size_(0), | 17 created_size_(0), |
| 17 lock_(NULL) { | 18 lock_(NULL) { |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 127 mapped_file_ = OpenFileMapping( | 128 mapped_file_ = OpenFileMapping( |
| 128 read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, false, | 129 read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, false, |
| 129 name_.empty() ? NULL : name_.c_str()); | 130 name_.empty() ? NULL : name_.c_str()); |
| 130 if (mapped_file_ != NULL) { | 131 if (mapped_file_ != NULL) { |
| 131 // Note: size_ is not set in this case. | 132 // Note: size_ is not set in this case. |
| 132 return true; | 133 return true; |
| 133 } | 134 } |
| 134 return false; | 135 return false; |
| 135 } | 136 } |
| 136 | 137 |
| 137 bool SharedMemory::Map(size_t bytes) { | 138 bool SharedMemory::MapFrom(off_t offset, size_t bytes) { |
| 138 if (mapped_file_ == NULL) | 139 if (mapped_file_ == NULL) |
| 139 return false; | 140 return false; |
| 140 | 141 |
| 141 if (bytes > static_cast<size_t>(std::numeric_limits<int>::max())) | 142 if (bytes > static_cast<size_t>(std::numeric_limits<int>::max())) |
| 142 return false; | 143 return false; |
| 143 | 144 |
| 145 DCHECK_EQ(0U, offset & (SysInfo::VMAllocationGranularity() - 1)); | |
|
Mark Mentovai
2013/01/15 21:51:42
Same.
Vitaly Buka (NO REVIEWS)
2013/01/15 22:13:05
So do you advise to remove DCHECK?
| |
| 144 memory_ = MapViewOfFile(mapped_file_, | 146 memory_ = MapViewOfFile(mapped_file_, |
| 145 read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, 0, 0, bytes); | 147 read_only_ ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS, |
| 148 static_cast<uint64>(offset) >> 32, | |
| 149 static_cast<DWORD>(offset), | |
| 150 bytes); | |
| 151 int e = GetLastError(); | |
|
Mark Mentovai
2013/01/15 21:51:42
Unused.
Vitaly Buka (NO REVIEWS)
2013/01/15 22:13:05
Done.
| |
| 146 if (memory_ != NULL) { | 152 if (memory_ != NULL) { |
| 147 DCHECK_EQ(0U, reinterpret_cast<uintptr_t>(memory_) & | 153 DCHECK_EQ(0U, reinterpret_cast<uintptr_t>(memory_) & |
| 148 (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1)); | 154 (SharedMemory::MAP_MINIMUM_ALIGNMENT - 1)); |
| 149 return true; | 155 return true; |
| 150 } | 156 } |
| 151 return false; | 157 return false; |
| 152 } | 158 } |
| 153 | 159 |
| 154 bool SharedMemory::Unmap() { | 160 bool SharedMemory::Unmap() { |
| 155 if (memory_ == NULL) | 161 if (memory_ == NULL) |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 225 void SharedMemory::Unlock() { | 231 void SharedMemory::Unlock() { |
| 226 DCHECK(lock_ != NULL); | 232 DCHECK(lock_ != NULL); |
| 227 ReleaseMutex(lock_); | 233 ReleaseMutex(lock_); |
| 228 } | 234 } |
| 229 | 235 |
| 230 SharedMemoryHandle SharedMemory::handle() const { | 236 SharedMemoryHandle SharedMemory::handle() const { |
| 231 return mapped_file_; | 237 return mapped_file_; |
| 232 } | 238 } |
| 233 | 239 |
| 234 } // namespace base | 240 } // namespace base |
| OLD | NEW |