| 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 |