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