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/entrypoints.h" |
| 6 |
5 #include <stdint.h> | 7 #include <stdint.h> |
6 | 8 |
7 #include "mojo/edk/embedder/embedder_internal.h" | 9 #include "mojo/edk/embedder/embedder_internal.h" |
8 #include "mojo/edk/system/core.h" | 10 #include "mojo/edk/system/core.h" |
9 #include "mojo/public/c/system/buffer.h" | 11 #include "mojo/public/c/system/buffer.h" |
10 #include "mojo/public/c/system/data_pipe.h" | 12 #include "mojo/public/c/system/data_pipe.h" |
11 #include "mojo/public/c/system/functions.h" | 13 #include "mojo/public/c/system/functions.h" |
12 #include "mojo/public/c/system/message_pipe.h" | 14 #include "mojo/public/c/system/message_pipe.h" |
13 #include "mojo/public/c/system/platform_handle.h" | 15 #include "mojo/public/c/system/platform_handle.h" |
14 #include "mojo/public/c/system/wait_set.h" | 16 #include "mojo/public/c/system/wait_set.h" |
15 | 17 |
16 using mojo::edk::internal::g_core; | 18 using mojo::edk::internal::g_core; |
17 | 19 |
18 // Definitions of the system functions. | 20 // Definitions of the system functions. |
19 extern "C" { | 21 extern "C" { |
20 | 22 |
21 MojoTimeTicks MojoGetTimeTicksNow() { | 23 MojoTimeTicks MojoGetTimeTicksNowImpl() { |
22 return g_core->GetTimeTicksNow(); | 24 return g_core->GetTimeTicksNow(); |
23 } | 25 } |
24 | 26 |
25 MojoResult MojoClose(MojoHandle handle) { | 27 MojoResult MojoCloseImpl(MojoHandle handle) { |
26 return g_core->Close(handle); | 28 return g_core->Close(handle); |
27 } | 29 } |
28 | 30 |
29 MojoResult MojoWait(MojoHandle handle, | 31 MojoResult MojoWaitImpl(MojoHandle handle, |
30 MojoHandleSignals signals, | 32 MojoHandleSignals signals, |
31 MojoDeadline deadline, | 33 MojoDeadline deadline, |
32 MojoHandleSignalsState* signals_state) { | 34 MojoHandleSignalsState* signals_state) { |
33 return g_core->Wait(handle, signals, deadline, signals_state); | 35 return g_core->Wait(handle, signals, deadline, signals_state); |
34 } | 36 } |
35 | 37 |
36 MojoResult MojoWaitMany(const MojoHandle* handles, | 38 MojoResult MojoWaitManyImpl(const MojoHandle* handles, |
37 const MojoHandleSignals* signals, | 39 const MojoHandleSignals* signals, |
38 uint32_t num_handles, | 40 uint32_t num_handles, |
39 MojoDeadline deadline, | 41 MojoDeadline deadline, |
40 uint32_t* result_index, | 42 uint32_t* result_index, |
41 MojoHandleSignalsState* signals_states) { | 43 MojoHandleSignalsState* signals_states) { |
42 return g_core->WaitMany(handles, signals, num_handles, deadline, result_index, | 44 return g_core->WaitMany(handles, signals, num_handles, deadline, result_index, |
43 signals_states); | 45 signals_states); |
44 } | 46 } |
45 | 47 |
46 MojoResult MojoWatch(MojoHandle handle, | 48 MojoResult MojoWatchImpl(MojoHandle handle, |
47 MojoHandleSignals signals, | 49 MojoHandleSignals signals, |
48 MojoWatchCallback callback, | 50 MojoWatchCallback callback, |
49 uintptr_t context) { | 51 uintptr_t context) { |
50 return g_core->Watch(handle, signals, callback, context); | 52 return g_core->Watch(handle, signals, callback, context); |
51 } | 53 } |
52 | 54 |
53 MojoResult MojoCancelWatch(MojoHandle handle, uintptr_t context) { | 55 MojoResult MojoCancelWatchImpl(MojoHandle handle, uintptr_t context) { |
54 return g_core->CancelWatch(handle, context); | 56 return g_core->CancelWatch(handle, context); |
55 } | 57 } |
56 | 58 |
57 MojoResult MojoAllocMessage(uint32_t num_bytes, | 59 MojoResult MojoAllocMessageImpl(uint32_t num_bytes, |
58 const MojoHandle* handles, | 60 const MojoHandle* handles, |
59 uint32_t num_handles, | 61 uint32_t num_handles, |
60 MojoAllocMessageFlags flags, | 62 MojoAllocMessageFlags flags, |
61 MojoMessageHandle* message) { | 63 MojoMessageHandle* message) { |
62 return g_core->AllocMessage(num_bytes, handles, num_handles, flags, message); | 64 return g_core->AllocMessage(num_bytes, handles, num_handles, flags, message); |
63 } | 65 } |
64 | 66 |
65 MojoResult MojoFreeMessage(MojoMessageHandle message) { | 67 MojoResult MojoFreeMessageImpl(MojoMessageHandle message) { |
66 return g_core->FreeMessage(message); | 68 return g_core->FreeMessage(message); |
67 } | 69 } |
68 | 70 |
69 MojoResult MojoGetMessageBuffer(MojoMessageHandle message, void** buffer) { | 71 MojoResult MojoGetMessageBufferImpl(MojoMessageHandle message, void** buffer) { |
70 return g_core->GetMessageBuffer(message, buffer); | 72 return g_core->GetMessageBuffer(message, buffer); |
71 } | 73 } |
72 | 74 |
73 MojoResult MojoCreateWaitSet(MojoHandle* wait_set_handle) { | 75 MojoResult MojoCreateWaitSetImpl(MojoHandle* wait_set_handle) { |
74 return g_core->CreateWaitSet(wait_set_handle); | 76 return g_core->CreateWaitSet(wait_set_handle); |
75 } | 77 } |
76 | 78 |
77 MojoResult MojoAddHandle(MojoHandle wait_set_handle, | 79 MojoResult MojoAddHandleImpl(MojoHandle wait_set_handle, |
78 MojoHandle handle, | 80 MojoHandle handle, |
79 MojoHandleSignals signals) { | 81 MojoHandleSignals signals) { |
80 return g_core->AddHandle(wait_set_handle, handle, signals); | 82 return g_core->AddHandle(wait_set_handle, handle, signals); |
81 } | 83 } |
82 | 84 |
83 MojoResult MojoRemoveHandle(MojoHandle wait_set_handle, MojoHandle handle) { | 85 MojoResult MojoRemoveHandleImpl(MojoHandle wait_set_handle, MojoHandle handle) { |
84 return g_core->RemoveHandle(wait_set_handle, handle); | 86 return g_core->RemoveHandle(wait_set_handle, handle); |
85 } | 87 } |
86 | 88 |
87 MojoResult MojoGetReadyHandles(MojoHandle wait_set_handle, | 89 MojoResult MojoGetReadyHandlesImpl( |
88 uint32_t* count, | 90 MojoHandle wait_set_handle, |
89 MojoHandle* handles, | 91 uint32_t* count, |
90 MojoResult* results, | 92 MojoHandle* handles, |
91 struct MojoHandleSignalsState* signals_states) { | 93 MojoResult* results, |
| 94 struct MojoHandleSignalsState* signals_states) { |
92 return g_core->GetReadyHandles(wait_set_handle, count, handles, results, | 95 return g_core->GetReadyHandles(wait_set_handle, count, handles, results, |
93 signals_states); | 96 signals_states); |
94 } | 97 } |
95 | 98 |
96 MojoResult MojoCreateMessagePipe(const MojoCreateMessagePipeOptions* options, | 99 MojoResult MojoCreateMessagePipeImpl( |
97 MojoHandle* message_pipe_handle0, | 100 const MojoCreateMessagePipeOptions* options, |
98 MojoHandle* message_pipe_handle1) { | 101 MojoHandle* message_pipe_handle0, |
| 102 MojoHandle* message_pipe_handle1) { |
99 return g_core->CreateMessagePipe(options, message_pipe_handle0, | 103 return g_core->CreateMessagePipe(options, message_pipe_handle0, |
100 message_pipe_handle1); | 104 message_pipe_handle1); |
101 } | 105 } |
102 | 106 |
103 MojoResult MojoWriteMessage(MojoHandle message_pipe_handle, | 107 MojoResult MojoWriteMessageImpl(MojoHandle message_pipe_handle, |
104 const void* bytes, | 108 const void* bytes, |
105 uint32_t num_bytes, | 109 uint32_t num_bytes, |
106 const MojoHandle* handles, | 110 const MojoHandle* handles, |
107 uint32_t num_handles, | 111 uint32_t num_handles, |
108 MojoWriteMessageFlags flags) { | 112 MojoWriteMessageFlags flags) { |
109 return g_core->WriteMessage(message_pipe_handle, bytes, num_bytes, handles, | 113 return g_core->WriteMessage(message_pipe_handle, bytes, num_bytes, handles, |
110 num_handles, flags); | 114 num_handles, flags); |
111 } | 115 } |
112 | 116 |
113 MojoResult MojoWriteMessageNew(MojoHandle message_pipe_handle, | 117 MojoResult MojoWriteMessageNewImpl(MojoHandle message_pipe_handle, |
114 MojoMessageHandle message, | 118 MojoMessageHandle message, |
115 MojoWriteMessageFlags flags) { | 119 MojoWriteMessageFlags flags) { |
116 return g_core->WriteMessageNew(message_pipe_handle, message, flags); | 120 return g_core->WriteMessageNew(message_pipe_handle, message, flags); |
117 } | 121 } |
118 | 122 |
119 MojoResult MojoReadMessage(MojoHandle message_pipe_handle, | 123 MojoResult MojoReadMessageImpl(MojoHandle message_pipe_handle, |
120 void* bytes, | 124 void* bytes, |
121 uint32_t* num_bytes, | 125 uint32_t* num_bytes, |
122 MojoHandle* handles, | 126 MojoHandle* handles, |
123 uint32_t* num_handles, | 127 uint32_t* num_handles, |
124 MojoReadMessageFlags flags) { | 128 MojoReadMessageFlags flags) { |
125 return g_core->ReadMessage( | 129 return g_core->ReadMessage( |
126 message_pipe_handle, bytes, num_bytes, handles, num_handles, flags); | 130 message_pipe_handle, bytes, num_bytes, handles, num_handles, flags); |
127 } | 131 } |
128 | 132 |
129 MojoResult MojoReadMessageNew(MojoHandle message_pipe_handle, | 133 MojoResult MojoReadMessageNewImpl(MojoHandle message_pipe_handle, |
130 MojoMessageHandle* message, | 134 MojoMessageHandle* message, |
131 uint32_t* num_bytes, | 135 uint32_t* num_bytes, |
132 MojoHandle* handles, | 136 MojoHandle* handles, |
133 uint32_t* num_handles, | 137 uint32_t* num_handles, |
134 MojoReadMessageFlags flags) { | 138 MojoReadMessageFlags flags) { |
135 return g_core->ReadMessageNew( | 139 return g_core->ReadMessageNew( |
136 message_pipe_handle, message, num_bytes, handles, num_handles, flags); | 140 message_pipe_handle, message, num_bytes, handles, num_handles, flags); |
137 } | 141 } |
138 | 142 |
139 MojoResult MojoFuseMessagePipes(MojoHandle handle0, MojoHandle handle1) { | 143 MojoResult MojoFuseMessagePipesImpl(MojoHandle handle0, MojoHandle handle1) { |
140 return g_core->FuseMessagePipes(handle0, handle1); | 144 return g_core->FuseMessagePipes(handle0, handle1); |
141 } | 145 } |
142 | 146 |
143 MojoResult MojoCreateDataPipe(const MojoCreateDataPipeOptions* options, | 147 MojoResult MojoCreateDataPipeImpl(const MojoCreateDataPipeOptions* options, |
144 MojoHandle* data_pipe_producer_handle, | 148 MojoHandle* data_pipe_producer_handle, |
145 MojoHandle* data_pipe_consumer_handle) { | 149 MojoHandle* data_pipe_consumer_handle) { |
146 return g_core->CreateDataPipe(options, data_pipe_producer_handle, | 150 return g_core->CreateDataPipe(options, data_pipe_producer_handle, |
147 data_pipe_consumer_handle); | 151 data_pipe_consumer_handle); |
148 } | 152 } |
149 | 153 |
150 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle, | 154 MojoResult MojoWriteDataImpl(MojoHandle data_pipe_producer_handle, |
151 const void* elements, | 155 const void* elements, |
152 uint32_t* num_elements, | 156 uint32_t* num_elements, |
153 MojoWriteDataFlags flags) { | 157 MojoWriteDataFlags flags) { |
154 return g_core->WriteData(data_pipe_producer_handle, elements, num_elements, | 158 return g_core->WriteData(data_pipe_producer_handle, elements, num_elements, |
155 flags); | 159 flags); |
156 } | 160 } |
157 | 161 |
158 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle, | 162 MojoResult MojoBeginWriteDataImpl(MojoHandle data_pipe_producer_handle, |
159 void** buffer, | 163 void** buffer, |
160 uint32_t* buffer_num_elements, | 164 uint32_t* buffer_num_elements, |
161 MojoWriteDataFlags flags) { | 165 MojoWriteDataFlags flags) { |
162 return g_core->BeginWriteData(data_pipe_producer_handle, buffer, | 166 return g_core->BeginWriteData(data_pipe_producer_handle, buffer, |
163 buffer_num_elements, flags); | 167 buffer_num_elements, flags); |
164 } | 168 } |
165 | 169 |
166 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle, | 170 MojoResult MojoEndWriteDataImpl(MojoHandle data_pipe_producer_handle, |
167 uint32_t num_elements_written) { | 171 uint32_t num_elements_written) { |
168 return g_core->EndWriteData(data_pipe_producer_handle, num_elements_written); | 172 return g_core->EndWriteData(data_pipe_producer_handle, num_elements_written); |
169 } | 173 } |
170 | 174 |
171 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle, | 175 MojoResult MojoReadDataImpl(MojoHandle data_pipe_consumer_handle, |
172 void* elements, | 176 void* elements, |
173 uint32_t* num_elements, | 177 uint32_t* num_elements, |
174 MojoReadDataFlags flags) { | 178 MojoReadDataFlags flags) { |
175 return g_core->ReadData(data_pipe_consumer_handle, elements, num_elements, | 179 return g_core->ReadData(data_pipe_consumer_handle, elements, num_elements, |
176 flags); | 180 flags); |
177 } | 181 } |
178 | 182 |
179 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle, | 183 MojoResult MojoBeginReadDataImpl(MojoHandle data_pipe_consumer_handle, |
180 const void** buffer, | 184 const void** buffer, |
181 uint32_t* buffer_num_elements, | 185 uint32_t* buffer_num_elements, |
182 MojoReadDataFlags flags) { | 186 MojoReadDataFlags flags) { |
183 return g_core->BeginReadData(data_pipe_consumer_handle, buffer, | 187 return g_core->BeginReadData(data_pipe_consumer_handle, buffer, |
184 buffer_num_elements, flags); | 188 buffer_num_elements, flags); |
185 } | 189 } |
186 | 190 |
187 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle, | 191 MojoResult MojoEndReadDataImpl(MojoHandle data_pipe_consumer_handle, |
188 uint32_t num_elements_read) { | 192 uint32_t num_elements_read) { |
189 return g_core->EndReadData(data_pipe_consumer_handle, num_elements_read); | 193 return g_core->EndReadData(data_pipe_consumer_handle, num_elements_read); |
190 } | 194 } |
191 | 195 |
192 MojoResult MojoCreateSharedBuffer( | 196 MojoResult MojoCreateSharedBufferImpl( |
193 const struct MojoCreateSharedBufferOptions* options, | 197 const struct MojoCreateSharedBufferOptions* options, |
194 uint64_t num_bytes, | 198 uint64_t num_bytes, |
195 MojoHandle* shared_buffer_handle) { | 199 MojoHandle* shared_buffer_handle) { |
196 return g_core->CreateSharedBuffer(options, num_bytes, shared_buffer_handle); | 200 return g_core->CreateSharedBuffer(options, num_bytes, shared_buffer_handle); |
197 } | 201 } |
198 | 202 |
199 MojoResult MojoDuplicateBufferHandle( | 203 MojoResult MojoDuplicateBufferHandleImpl( |
200 MojoHandle buffer_handle, | 204 MojoHandle buffer_handle, |
201 const struct MojoDuplicateBufferHandleOptions* options, | 205 const struct MojoDuplicateBufferHandleOptions* options, |
202 MojoHandle* new_buffer_handle) { | 206 MojoHandle* new_buffer_handle) { |
203 return g_core->DuplicateBufferHandle(buffer_handle, options, | 207 return g_core->DuplicateBufferHandle(buffer_handle, options, |
204 new_buffer_handle); | 208 new_buffer_handle); |
205 } | 209 } |
206 | 210 |
207 MojoResult MojoMapBuffer(MojoHandle buffer_handle, | 211 MojoResult MojoMapBufferImpl(MojoHandle buffer_handle, |
208 uint64_t offset, | 212 uint64_t offset, |
209 uint64_t num_bytes, | 213 uint64_t num_bytes, |
210 void** buffer, | 214 void** buffer, |
211 MojoMapBufferFlags flags) { | 215 MojoMapBufferFlags flags) { |
212 return g_core->MapBuffer(buffer_handle, offset, num_bytes, buffer, flags); | 216 return g_core->MapBuffer(buffer_handle, offset, num_bytes, buffer, flags); |
213 } | 217 } |
214 | 218 |
215 MojoResult MojoUnmapBuffer(void* buffer) { | 219 MojoResult MojoUnmapBufferImpl(void* buffer) { |
216 return g_core->UnmapBuffer(buffer); | 220 return g_core->UnmapBuffer(buffer); |
217 } | 221 } |
218 | 222 |
219 MojoResult MojoWrapPlatformHandle(const MojoPlatformHandle* platform_handle, | 223 MojoResult MojoWrapPlatformHandleImpl(const MojoPlatformHandle* platform_handle, |
220 MojoHandle* mojo_handle) { | 224 MojoHandle* mojo_handle) { |
221 return g_core->WrapPlatformHandle(platform_handle, mojo_handle); | 225 return g_core->WrapPlatformHandle(platform_handle, mojo_handle); |
222 } | 226 } |
223 | 227 |
224 MojoResult MojoUnwrapPlatformHandle(MojoHandle mojo_handle, | 228 MojoResult MojoUnwrapPlatformHandleImpl(MojoHandle mojo_handle, |
225 MojoPlatformHandle* platform_handle) { | 229 MojoPlatformHandle* platform_handle) { |
226 return g_core->UnwrapPlatformHandle(mojo_handle, platform_handle); | 230 return g_core->UnwrapPlatformHandle(mojo_handle, platform_handle); |
227 } | 231 } |
228 | 232 |
229 MojoResult MojoWrapPlatformSharedBufferHandle( | 233 MojoResult MojoWrapPlatformSharedBufferHandleImpl( |
230 const MojoPlatformHandle* platform_handle, | 234 const MojoPlatformHandle* platform_handle, |
231 size_t num_bytes, | 235 size_t num_bytes, |
232 MojoPlatformSharedBufferHandleFlags flags, | 236 MojoPlatformSharedBufferHandleFlags flags, |
233 MojoHandle* mojo_handle) { | 237 MojoHandle* mojo_handle) { |
234 return g_core->WrapPlatformSharedBufferHandle(platform_handle, num_bytes, | 238 return g_core->WrapPlatformSharedBufferHandle(platform_handle, num_bytes, |
235 flags, mojo_handle); | 239 flags, mojo_handle); |
236 } | 240 } |
237 | 241 |
238 MojoResult MojoUnwrapPlatformSharedBufferHandle( | 242 MojoResult MojoUnwrapPlatformSharedBufferHandleImpl( |
239 MojoHandle mojo_handle, | 243 MojoHandle mojo_handle, |
240 MojoPlatformHandle* platform_handle, | 244 MojoPlatformHandle* platform_handle, |
241 size_t* num_bytes, | 245 size_t* num_bytes, |
242 MojoPlatformSharedBufferHandleFlags* flags) { | 246 MojoPlatformSharedBufferHandleFlags* flags) { |
243 return g_core->UnwrapPlatformSharedBufferHandle(mojo_handle, platform_handle, | 247 return g_core->UnwrapPlatformSharedBufferHandle(mojo_handle, platform_handle, |
244 num_bytes, flags); | 248 num_bytes, flags); |
245 } | 249 } |
246 | 250 |
247 } // extern "C" | 251 } // extern "C" |
| 252 |
| 253 namespace mojo { |
| 254 namespace edk { |
| 255 |
| 256 MojoSystemThunks MakeSystemThunks() { |
| 257 MojoSystemThunks system_thunks = {sizeof(MojoSystemThunks), |
| 258 MojoGetTimeTicksNowImpl, |
| 259 MojoCloseImpl, |
| 260 MojoWaitImpl, |
| 261 MojoWaitManyImpl, |
| 262 MojoCreateMessagePipeImpl, |
| 263 MojoWriteMessageImpl, |
| 264 MojoReadMessageImpl, |
| 265 MojoCreateDataPipeImpl, |
| 266 MojoWriteDataImpl, |
| 267 MojoBeginWriteDataImpl, |
| 268 MojoEndWriteDataImpl, |
| 269 MojoReadDataImpl, |
| 270 MojoBeginReadDataImpl, |
| 271 MojoEndReadDataImpl, |
| 272 MojoCreateSharedBufferImpl, |
| 273 MojoDuplicateBufferHandleImpl, |
| 274 MojoMapBufferImpl, |
| 275 MojoUnmapBufferImpl, |
| 276 MojoCreateWaitSetImpl, |
| 277 MojoAddHandleImpl, |
| 278 MojoRemoveHandleImpl, |
| 279 MojoGetReadyHandlesImpl, |
| 280 MojoWatchImpl, |
| 281 MojoCancelWatchImpl, |
| 282 MojoFuseMessagePipesImpl, |
| 283 MojoWriteMessageNewImpl, |
| 284 MojoReadMessageNewImpl, |
| 285 MojoAllocMessageImpl, |
| 286 MojoFreeMessageImpl, |
| 287 MojoGetMessageBufferImpl, |
| 288 MojoWrapPlatformHandleImpl, |
| 289 MojoUnwrapPlatformHandleImpl, |
| 290 MojoWrapPlatformSharedBufferHandleImpl, |
| 291 MojoUnwrapPlatformSharedBufferHandleImpl}; |
| 292 return system_thunks; |
| 293 } |
| 294 |
| 295 } // namespace edk |
| 296 } // namespace mojo |
OLD | NEW |