diff options
Diffstat (limited to 'mojo/edk/embedder/entrypoints.cc')
-rw-r--r-- | mojo/edk/embedder/entrypoints.cc | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/mojo/edk/embedder/entrypoints.cc b/mojo/edk/embedder/entrypoints.cc new file mode 100644 index 0000000000..9081368550 --- /dev/null +++ b/mojo/edk/embedder/entrypoints.cc @@ -0,0 +1,283 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "mojo/edk/embedder/entrypoints.h" + +#include <stdint.h> + +#include "mojo/edk/embedder/embedder_internal.h" +#include "mojo/edk/system/core.h" +#include "mojo/public/c/system/buffer.h" +#include "mojo/public/c/system/data_pipe.h" +#include "mojo/public/c/system/functions.h" +#include "mojo/public/c/system/message_pipe.h" +#include "mojo/public/c/system/platform_handle.h" + +using mojo::edk::internal::g_core; + +// Definitions of the system functions. +extern "C" { + +MojoTimeTicks MojoGetTimeTicksNowImpl() { + return g_core->GetTimeTicksNow(); +} + +MojoResult MojoCloseImpl(MojoHandle handle) { + return g_core->Close(handle); +} + +MojoResult MojoQueryHandleSignalsStateImpl( + MojoHandle handle, + MojoHandleSignalsState* signals_state) { + return g_core->QueryHandleSignalsState(handle, signals_state); +} + +MojoResult MojoCreateWatcherImpl(MojoWatcherCallback callback, + MojoHandle* watcher_handle) { + return g_core->CreateWatcher(callback, watcher_handle); +} + +MojoResult MojoArmWatcherImpl(MojoHandle watcher_handle, + uint32_t* num_ready_contexts, + uintptr_t* ready_contexts, + MojoResult* ready_results, + MojoHandleSignalsState* ready_signals_states) { + return g_core->ArmWatcher(watcher_handle, num_ready_contexts, ready_contexts, + ready_results, ready_signals_states); +} + +MojoResult MojoWatchImpl(MojoHandle watcher_handle, + MojoHandle handle, + MojoHandleSignals signals, + uintptr_t context) { + return g_core->Watch(watcher_handle, handle, signals, context); +} + +MojoResult MojoCancelWatchImpl(MojoHandle watcher_handle, uintptr_t context) { + return g_core->CancelWatch(watcher_handle, context); +} + +MojoResult MojoAllocMessageImpl(uint32_t num_bytes, + const MojoHandle* handles, + uint32_t num_handles, + MojoAllocMessageFlags flags, + MojoMessageHandle* message) { + return g_core->AllocMessage(num_bytes, handles, num_handles, flags, message); +} + +MojoResult MojoFreeMessageImpl(MojoMessageHandle message) { + return g_core->FreeMessage(message); +} + +MojoResult MojoGetMessageBufferImpl(MojoMessageHandle message, void** buffer) { + return g_core->GetMessageBuffer(message, buffer); +} + +MojoResult MojoCreateMessagePipeImpl( + const MojoCreateMessagePipeOptions* options, + MojoHandle* message_pipe_handle0, + MojoHandle* message_pipe_handle1) { + return g_core->CreateMessagePipe(options, message_pipe_handle0, + message_pipe_handle1); +} + +MojoResult MojoWriteMessageImpl(MojoHandle message_pipe_handle, + const void* bytes, + uint32_t num_bytes, + const MojoHandle* handles, + uint32_t num_handles, + MojoWriteMessageFlags flags) { + return g_core->WriteMessage(message_pipe_handle, bytes, num_bytes, handles, + num_handles, flags); +} + +MojoResult MojoWriteMessageNewImpl(MojoHandle message_pipe_handle, + MojoMessageHandle message, + MojoWriteMessageFlags flags) { + return g_core->WriteMessageNew(message_pipe_handle, message, flags); +} + +MojoResult MojoReadMessageImpl(MojoHandle message_pipe_handle, + void* bytes, + uint32_t* num_bytes, + MojoHandle* handles, + uint32_t* num_handles, + MojoReadMessageFlags flags) { + return g_core->ReadMessage( + message_pipe_handle, bytes, num_bytes, handles, num_handles, flags); +} + +MojoResult MojoReadMessageNewImpl(MojoHandle message_pipe_handle, + MojoMessageHandle* message, + uint32_t* num_bytes, + MojoHandle* handles, + uint32_t* num_handles, + MojoReadMessageFlags flags) { + return g_core->ReadMessageNew( + message_pipe_handle, message, num_bytes, handles, num_handles, flags); +} + +MojoResult MojoFuseMessagePipesImpl(MojoHandle handle0, MojoHandle handle1) { + return g_core->FuseMessagePipes(handle0, handle1); +} + +MojoResult MojoCreateDataPipeImpl(const MojoCreateDataPipeOptions* options, + MojoHandle* data_pipe_producer_handle, + MojoHandle* data_pipe_consumer_handle) { + return g_core->CreateDataPipe(options, data_pipe_producer_handle, + data_pipe_consumer_handle); +} + +MojoResult MojoWriteDataImpl(MojoHandle data_pipe_producer_handle, + const void* elements, + uint32_t* num_elements, + MojoWriteDataFlags flags) { + return g_core->WriteData(data_pipe_producer_handle, elements, num_elements, + flags); +} + +MojoResult MojoBeginWriteDataImpl(MojoHandle data_pipe_producer_handle, + void** buffer, + uint32_t* buffer_num_elements, + MojoWriteDataFlags flags) { + return g_core->BeginWriteData(data_pipe_producer_handle, buffer, + buffer_num_elements, flags); +} + +MojoResult MojoEndWriteDataImpl(MojoHandle data_pipe_producer_handle, + uint32_t num_elements_written) { + return g_core->EndWriteData(data_pipe_producer_handle, num_elements_written); +} + +MojoResult MojoReadDataImpl(MojoHandle data_pipe_consumer_handle, + void* elements, + uint32_t* num_elements, + MojoReadDataFlags flags) { + return g_core->ReadData(data_pipe_consumer_handle, elements, num_elements, + flags); +} + +MojoResult MojoBeginReadDataImpl(MojoHandle data_pipe_consumer_handle, + const void** buffer, + uint32_t* buffer_num_elements, + MojoReadDataFlags flags) { + return g_core->BeginReadData(data_pipe_consumer_handle, buffer, + buffer_num_elements, flags); +} + +MojoResult MojoEndReadDataImpl(MojoHandle data_pipe_consumer_handle, + uint32_t num_elements_read) { + return g_core->EndReadData(data_pipe_consumer_handle, num_elements_read); +} + +MojoResult MojoCreateSharedBufferImpl( + const struct MojoCreateSharedBufferOptions* options, + uint64_t num_bytes, + MojoHandle* shared_buffer_handle) { + return g_core->CreateSharedBuffer(options, num_bytes, shared_buffer_handle); +} + +MojoResult MojoDuplicateBufferHandleImpl( + MojoHandle buffer_handle, + const struct MojoDuplicateBufferHandleOptions* options, + MojoHandle* new_buffer_handle) { + return g_core->DuplicateBufferHandle(buffer_handle, options, + new_buffer_handle); +} + +MojoResult MojoMapBufferImpl(MojoHandle buffer_handle, + uint64_t offset, + uint64_t num_bytes, + void** buffer, + MojoMapBufferFlags flags) { + return g_core->MapBuffer(buffer_handle, offset, num_bytes, buffer, flags); +} + +MojoResult MojoUnmapBufferImpl(void* buffer) { + return g_core->UnmapBuffer(buffer); +} + +MojoResult MojoWrapPlatformHandleImpl(const MojoPlatformHandle* platform_handle, + MojoHandle* mojo_handle) { + return g_core->WrapPlatformHandle(platform_handle, mojo_handle); +} + +MojoResult MojoUnwrapPlatformHandleImpl(MojoHandle mojo_handle, + MojoPlatformHandle* platform_handle) { + return g_core->UnwrapPlatformHandle(mojo_handle, platform_handle); +} + +MojoResult MojoWrapPlatformSharedBufferHandleImpl( + const MojoPlatformHandle* platform_handle, + size_t num_bytes, + MojoPlatformSharedBufferHandleFlags flags, + MojoHandle* mojo_handle) { + return g_core->WrapPlatformSharedBufferHandle(platform_handle, num_bytes, + flags, mojo_handle); +} + +MojoResult MojoUnwrapPlatformSharedBufferHandleImpl( + MojoHandle mojo_handle, + MojoPlatformHandle* platform_handle, + size_t* num_bytes, + MojoPlatformSharedBufferHandleFlags* flags) { + return g_core->UnwrapPlatformSharedBufferHandle(mojo_handle, platform_handle, + num_bytes, flags); +} + +MojoResult MojoNotifyBadMessageImpl(MojoMessageHandle message, + const char* error, + size_t error_num_bytes) { + return g_core->NotifyBadMessage(message, error, error_num_bytes); +} + +MojoResult MojoGetPropertyImpl(MojoPropertyType type, void* value) { + return g_core->GetProperty(type, value); +} + +} // extern "C" + +namespace mojo { +namespace edk { + +MojoSystemThunks MakeSystemThunks() { + MojoSystemThunks system_thunks = {sizeof(MojoSystemThunks), + MojoGetTimeTicksNowImpl, + MojoCloseImpl, + MojoQueryHandleSignalsStateImpl, + MojoCreateMessagePipeImpl, + MojoWriteMessageImpl, + MojoReadMessageImpl, + MojoCreateDataPipeImpl, + MojoWriteDataImpl, + MojoBeginWriteDataImpl, + MojoEndWriteDataImpl, + MojoReadDataImpl, + MojoBeginReadDataImpl, + MojoEndReadDataImpl, + MojoCreateSharedBufferImpl, + MojoDuplicateBufferHandleImpl, + MojoMapBufferImpl, + MojoUnmapBufferImpl, + MojoCreateWatcherImpl, + MojoWatchImpl, + MojoCancelWatchImpl, + MojoArmWatcherImpl, + MojoFuseMessagePipesImpl, + MojoWriteMessageNewImpl, + MojoReadMessageNewImpl, + MojoAllocMessageImpl, + MojoFreeMessageImpl, + MojoGetMessageBufferImpl, + MojoWrapPlatformHandleImpl, + MojoUnwrapPlatformHandleImpl, + MojoWrapPlatformSharedBufferHandleImpl, + MojoUnwrapPlatformSharedBufferHandleImpl, + MojoNotifyBadMessageImpl, + MojoGetPropertyImpl}; + return system_thunks; +} + +} // namespace edk +} // namespace mojo |