Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / mojo / system / entrypoints.cc
index 096fd02..9b5d3bf 100644 (file)
@@ -2,9 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "mojo/system/entrypoints.h"
+
+#include "base/logging.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/system/core.h"
 
-static mojo::system::Core* g_core = NULL;
+static mojo::system::Core* g_core = nullptr;
+
+using mojo::system::MakeUserPointer;
 
 namespace mojo {
 namespace system {
@@ -24,7 +33,6 @@ Core* GetCore() {
 
 // Definitions of the system functions.
 extern "C" {
-
 MojoTimeTicks MojoGetTimeTicksNow() {
   return g_core->GetTimeTicksNow();
 }
@@ -34,21 +42,33 @@ MojoResult MojoClose(MojoHandle handle) {
 }
 
 MojoResult MojoWait(MojoHandle handle,
-                    MojoWaitFlags flags,
+                    MojoHandleSignals signals,
                     MojoDeadline deadline) {
-  return g_core->Wait(handle, flags, deadline);
+  return g_core->Wait(
+      handle, signals, deadline, mojo::system::NullUserPointer());
 }
 
 MojoResult MojoWaitMany(const MojoHandle* handles,
-                        const MojoWaitFlags* flags,
+                        const MojoHandleSignals* signals,
                         uint32_t num_handles,
                         MojoDeadline deadline) {
-  return g_core->WaitMany(handles, flags, num_handles, deadline);
-}
-
-MojoResult MojoCreateMessagePipe(MojoHandle* message_pipe_handle0,
+  uint32_t result_index = static_cast<uint32_t>(-1);
+  MojoResult result = g_core->WaitMany(MakeUserPointer(handles),
+                                       MakeUserPointer(signals),
+                                       num_handles,
+                                       deadline,
+                                       MakeUserPointer(&result_index),
+                                       mojo::system::NullUserPointer());
+  return (result == MOJO_RESULT_OK) ? static_cast<MojoResult>(result_index)
+                                    : result;
+}
+
+MojoResult MojoCreateMessagePipe(const MojoCreateMessagePipeOptions* options,
+                                 MojoHandle* message_pipe_handle0,
                                  MojoHandle* message_pipe_handle1) {
-  return g_core->CreateMessagePipe(message_pipe_handle0, message_pipe_handle1);
+  return g_core->CreateMessagePipe(MakeUserPointer(options),
+                                   MakeUserPointer(message_pipe_handle0),
+                                   MakeUserPointer(message_pipe_handle1));
 }
 
 MojoResult MojoWriteMessage(MojoHandle message_pipe_handle,
@@ -57,41 +77,54 @@ MojoResult MojoWriteMessage(MojoHandle message_pipe_handle,
                             const MojoHandle* handles,
                             uint32_t num_handles,
                             MojoWriteMessageFlags flags) {
-  return g_core->WriteMessage(
-      message_pipe_handle, bytes, num_bytes, handles, num_handles, flags);
+  return g_core->WriteMessage(message_pipe_handle,
+                              MakeUserPointer(bytes),
+                              num_bytes,
+                              MakeUserPointer(handles),
+                              num_handles,
+                              flags);
 }
 
 MojoResult MojoReadMessage(MojoHandle message_pipe_handle,
                            void* bytes,
                            uint32_t* num_bytes,
                            MojoHandle* handles,
-                         uint32_t* num_handles,
+                           uint32_t* num_handles,
                            MojoReadMessageFlags flags) {
-  return g_core->ReadMessage(
-      message_pipe_handle, bytes, num_bytes, handles, num_handles, flags);
+  return g_core->ReadMessage(message_pipe_handle,
+                             MakeUserPointer(bytes),
+                             MakeUserPointer(num_bytes),
+                             MakeUserPointer(handles),
+                             MakeUserPointer(num_handles),
+                             flags);
 }
 
 MojoResult MojoCreateDataPipe(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);
+  return g_core->CreateDataPipe(MakeUserPointer(options),
+                                MakeUserPointer(data_pipe_producer_handle),
+                                MakeUserPointer(data_pipe_consumer_handle));
 }
 
 MojoResult MojoWriteData(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);
+  return g_core->WriteData(data_pipe_producer_handle,
+                           MakeUserPointer(elements),
+                           MakeUserPointer(num_elements),
+                           flags);
 }
 
 MojoResult MojoBeginWriteData(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);
+  return g_core->BeginWriteData(data_pipe_producer_handle,
+                                MakeUserPointer(buffer),
+                                MakeUserPointer(buffer_num_elements),
+                                flags);
 }
 
 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle,
@@ -103,16 +136,20 @@ MojoResult MojoReadData(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);
+  return g_core->ReadData(data_pipe_consumer_handle,
+                          MakeUserPointer(elements),
+                          MakeUserPointer(num_elements),
+                          flags);
 }
 
 MojoResult MojoBeginReadData(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);
+  return g_core->BeginReadData(data_pipe_consumer_handle,
+                               MakeUserPointer(buffer),
+                               MakeUserPointer(buffer_num_elements),
+                               flags);
 }
 
 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle,
@@ -124,15 +161,18 @@ MojoResult MojoCreateSharedBuffer(
     const struct MojoCreateSharedBufferOptions* options,
     uint64_t num_bytes,
     MojoHandle* shared_buffer_handle) {
-  return g_core->CreateSharedBuffer(options, num_bytes, shared_buffer_handle);
+  return g_core->CreateSharedBuffer(MakeUserPointer(options),
+                                    num_bytes,
+                                    MakeUserPointer(shared_buffer_handle));
 }
 
 MojoResult MojoDuplicateBufferHandle(
     MojoHandle buffer_handle,
     const struct MojoDuplicateBufferHandleOptions* options,
     MojoHandle* new_buffer_handle) {
-  return g_core->DuplicateBufferHandle(
-      buffer_handle, options, new_buffer_handle);
+  return g_core->DuplicateBufferHandle(buffer_handle,
+                                       MakeUserPointer(options),
+                                       MakeUserPointer(new_buffer_handle));
 }
 
 MojoResult MojoMapBuffer(MojoHandle buffer_handle,
@@ -140,11 +180,12 @@ MojoResult MojoMapBuffer(MojoHandle buffer_handle,
                          uint64_t num_bytes,
                          void** buffer,
                          MojoMapBufferFlags flags) {
-  return g_core->MapBuffer(buffer_handle, offset, num_bytes, buffer, flags);
+  return g_core->MapBuffer(
+      buffer_handle, offset, num_bytes, MakeUserPointer(buffer), flags);
 }
 
 MojoResult MojoUnmapBuffer(void* buffer) {
-  return g_core->UnmapBuffer(buffer);
+  return g_core->UnmapBuffer(MakeUserPointer(buffer));
 }
 
 }  // extern "C"