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 "mojo/edk/embedder/platform_shared_buffer.h" | 5 #include "mojo/edk/embedder/platform_shared_buffer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 return shared_memory_->Create(options); | 229 return shared_memory_->Create(options); |
230 } | 230 } |
231 | 231 |
232 bool PlatformSharedBuffer::InitFromPlatformHandle( | 232 bool PlatformSharedBuffer::InitFromPlatformHandle( |
233 ScopedPlatformHandle platform_handle) { | 233 ScopedPlatformHandle platform_handle) { |
234 DCHECK(!shared_memory_); | 234 DCHECK(!shared_memory_); |
235 | 235 |
236 // TODO(rockot): Pass GUIDs through Mojo. https://crbug.com/713763. | 236 // TODO(rockot): Pass GUIDs through Mojo. https://crbug.com/713763. |
237 base::UnguessableToken guid = base::UnguessableToken::Create(); | 237 base::UnguessableToken guid = base::UnguessableToken::Create(); |
238 #if defined(OS_WIN) | 238 #if defined(OS_WIN) |
239 base::SharedMemoryHandle handle(platform_handle.release().handle, guid); | 239 base::SharedMemoryHandle handle(platform_handle.release().handle, num_bytes_, |
| 240 guid); |
240 #elif defined(OS_MACOSX) && !defined(OS_IOS) | 241 #elif defined(OS_MACOSX) && !defined(OS_IOS) |
241 base::SharedMemoryHandle handle = base::SharedMemoryHandle( | 242 base::SharedMemoryHandle handle = base::SharedMemoryHandle( |
242 platform_handle.release().port, num_bytes_, guid); | 243 platform_handle.release().port, num_bytes_, guid); |
243 #else | 244 #else |
244 base::SharedMemoryHandle handle( | 245 base::SharedMemoryHandle handle( |
245 base::FileDescriptor(platform_handle.release().handle, false), guid); | 246 base::FileDescriptor(platform_handle.release().handle, false), num_bytes_, |
| 247 guid); |
246 #endif | 248 #endif |
247 | 249 |
248 shared_memory_.reset(new base::SharedMemory(handle, read_only_)); | 250 shared_memory_.reset(new base::SharedMemory(handle, read_only_)); |
249 return true; | 251 return true; |
250 } | 252 } |
251 | 253 |
252 bool PlatformSharedBuffer::InitFromPlatformHandlePair( | 254 bool PlatformSharedBuffer::InitFromPlatformHandlePair( |
253 ScopedPlatformHandle rw_platform_handle, | 255 ScopedPlatformHandle rw_platform_handle, |
254 ScopedPlatformHandle ro_platform_handle) { | 256 ScopedPlatformHandle ro_platform_handle) { |
255 #if defined(OS_MACOSX) | 257 #if defined(OS_MACOSX) |
256 NOTREACHED(); | 258 NOTREACHED(); |
257 return false; | 259 return false; |
258 #else // defined(OS_MACOSX) | 260 #else // defined(OS_MACOSX) |
259 | 261 |
260 // TODO(rockot): Pass GUIDs through Mojo. https://crbug.com/713763. | 262 // TODO(rockot): Pass GUIDs through Mojo. https://crbug.com/713763. |
261 base::UnguessableToken guid = base::UnguessableToken::Create(); | 263 base::UnguessableToken guid = base::UnguessableToken::Create(); |
262 #if defined(OS_WIN) | 264 #if defined(OS_WIN) |
263 base::SharedMemoryHandle handle(rw_platform_handle.release().handle, guid); | 265 base::SharedMemoryHandle handle(rw_platform_handle.release().handle, |
264 base::SharedMemoryHandle ro_handle(ro_platform_handle.release().handle, guid); | 266 num_bytes_, guid); |
| 267 base::SharedMemoryHandle ro_handle(ro_platform_handle.release().handle, |
| 268 num_bytes_, guid); |
265 #else // defined(OS_WIN) | 269 #else // defined(OS_WIN) |
266 base::SharedMemoryHandle handle( | 270 base::SharedMemoryHandle handle( |
267 base::FileDescriptor(rw_platform_handle.release().handle, false), guid); | 271 base::FileDescriptor(rw_platform_handle.release().handle, false), |
| 272 num_bytes_, guid); |
268 base::SharedMemoryHandle ro_handle( | 273 base::SharedMemoryHandle ro_handle( |
269 base::FileDescriptor(ro_platform_handle.release().handle, false), guid); | 274 base::FileDescriptor(ro_platform_handle.release().handle, false), |
| 275 num_bytes_, guid); |
270 #endif // defined(OS_WIN) | 276 #endif // defined(OS_WIN) |
271 | 277 |
272 DCHECK(!shared_memory_); | 278 DCHECK(!shared_memory_); |
273 shared_memory_.reset(new base::SharedMemory(handle, false)); | 279 shared_memory_.reset(new base::SharedMemory(handle, false)); |
274 ro_shared_memory_.reset(new base::SharedMemory(ro_handle, true)); | 280 ro_shared_memory_.reset(new base::SharedMemory(ro_handle, true)); |
275 return true; | 281 return true; |
276 | 282 |
277 #endif // defined(OS_MACOSX) | 283 #endif // defined(OS_MACOSX) |
278 } | 284 } |
279 | 285 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 base_ = static_cast<char*>(shared_memory_.memory()) + offset_rounding; | 322 base_ = static_cast<char*>(shared_memory_.memory()) + offset_rounding; |
317 return true; | 323 return true; |
318 } | 324 } |
319 | 325 |
320 void PlatformSharedBufferMapping::Unmap() { | 326 void PlatformSharedBufferMapping::Unmap() { |
321 shared_memory_.Unmap(); | 327 shared_memory_.Unmap(); |
322 } | 328 } |
323 | 329 |
324 } // namespace edk | 330 } // namespace edk |
325 } // namespace mojo | 331 } // namespace mojo |
OLD | NEW |