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 #ifndef MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ | 5 #ifndef MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ |
6 #define MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ | 6 #define MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 | 11 |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
14 #include "base/memory/shared_memory.h" | 14 #include "base/memory/shared_memory.h" |
15 #include "base/memory/shared_memory_handle.h" | 15 #include "base/memory/shared_memory_handle.h" |
16 #include "base/synchronization/lock.h" | 16 #include "base/synchronization/lock.h" |
17 #include "mojo/edk/embedder/scoped_platform_handle.h" | 17 #include "mojo/edk/embedder/scoped_platform_handle.h" |
18 #include "mojo/edk/system/system_impl_export.h" | 18 #include "mojo/edk/system/system_impl_export.h" |
| 19 #include "mojo/public/c/system/types.h" |
19 | 20 |
20 namespace mojo { | 21 namespace mojo { |
21 namespace edk { | 22 namespace edk { |
22 | 23 |
23 class PlatformSharedBufferMapping; | 24 class PlatformSharedBufferMapping; |
24 | 25 |
25 // |PlatformSharedBuffer| is a thread-safe, ref-counted wrapper around | 26 // |PlatformSharedBuffer| is a thread-safe, ref-counted wrapper around |
26 // OS-specific shared memory. It has the following features: | 27 // OS-specific shared memory. It has the following features: |
27 // - A |PlatformSharedBuffer| simply represents a piece of shared memory that | 28 // - A |PlatformSharedBuffer| simply represents a piece of shared memory that |
28 // *may* be mapped and *may* be shared to another process. | 29 // *may* be mapped and *may* be shared to another process. |
(...skipping 25 matching lines...) Expand all Loading... |
54 ScopedPlatformHandle rw_platform_handle, | 55 ScopedPlatformHandle rw_platform_handle, |
55 ScopedPlatformHandle ro_platform_handle); | 56 ScopedPlatformHandle ro_platform_handle); |
56 | 57 |
57 // Creates a shared buffer of size |num_bytes| from the existing shared memory | 58 // Creates a shared buffer of size |num_bytes| from the existing shared memory |
58 // handle |handle|. | 59 // handle |handle|. |
59 static PlatformSharedBuffer* CreateFromSharedMemoryHandle( | 60 static PlatformSharedBuffer* CreateFromSharedMemoryHandle( |
60 size_t num_bytes, | 61 size_t num_bytes, |
61 bool read_only, | 62 bool read_only, |
62 base::SharedMemoryHandle handle); | 63 base::SharedMemoryHandle handle); |
63 | 64 |
| 65 // Returns a base::SharedMemoryHandle given a PlatformHandle and some |
| 66 // associated settings. |
| 67 static base::SharedMemoryHandle GetSharedMemoryHandleFromPlatformHandle( |
| 68 MojoPlatformHandle platform_handle, |
| 69 size_t size, |
| 70 bool read_only); |
| 71 |
| 72 // Returns a PlatformHandle from a given base::SharedMemoryHandle. |
| 73 static PlatformHandle GetPlatformHandleFromSharedMemoryHandle( |
| 74 base::SharedMemoryHandle memory_handle); |
| 75 |
64 // Gets the size of shared buffer (in number of bytes). | 76 // Gets the size of shared buffer (in number of bytes). |
65 size_t GetNumBytes() const; | 77 size_t GetNumBytes() const; |
66 | 78 |
67 // Returns whether this shared buffer is read-only. | 79 // Returns whether this shared buffer is read-only. |
68 bool IsReadOnly() const; | 80 bool IsReadOnly() const; |
69 | 81 |
70 // Maps (some) of the shared buffer into memory; [|offset|, |offset + length|] | 82 // Maps (some) of the shared buffer into memory; [|offset|, |offset + length|] |
71 // must be contained in [0, |num_bytes|], and |length| must be at least 1. | 83 // must be contained in [0, |num_bytes|], and |length| must be at least 1. |
72 // Returns null on failure. | 84 // Returns null on failure. |
73 std::unique_ptr<PlatformSharedBufferMapping> Map(size_t offset, | 85 std::unique_ptr<PlatformSharedBufferMapping> Map(size_t offset, |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 // created from a duplicate handle. | 181 // created from a duplicate handle. |
170 base::SharedMemory shared_memory_; | 182 base::SharedMemory shared_memory_; |
171 | 183 |
172 DISALLOW_COPY_AND_ASSIGN(PlatformSharedBufferMapping); | 184 DISALLOW_COPY_AND_ASSIGN(PlatformSharedBufferMapping); |
173 }; | 185 }; |
174 | 186 |
175 } // namespace edk | 187 } // namespace edk |
176 } // namespace mojo | 188 } // namespace mojo |
177 | 189 |
178 #endif // MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ | 190 #endif // MOJO_EDK_EMBEDDER_PLATFORM_SHARED_BUFFER_H_ |
OLD | NEW |