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
3 // found in the LICENSE file.
5 #include "mojo/system/entrypoints.h"
7 #include "mojo/public/c/system/buffer.h"
8 #include "mojo/public/c/system/data_pipe.h"
9 #include "mojo/public/c/system/functions.h"
10 #include "mojo/public/c/system/message_pipe.h"
11 #include "mojo/system/core.h"
13 static mojo::system::Core
* g_core
= NULL
;
17 namespace entrypoints
{
19 void SetCore(Core
* core
) {
27 } // namespace entrypoints
31 // Definitions of the system functions.
34 MojoTimeTicks
MojoGetTimeTicksNow() {
35 return g_core
->GetTimeTicksNow();
38 MojoResult
MojoClose(MojoHandle handle
) {
39 return g_core
->Close(handle
);
42 MojoResult
MojoWait(MojoHandle handle
,
44 MojoDeadline deadline
) {
45 return g_core
->Wait(handle
, flags
, deadline
);
48 MojoResult
MojoWaitMany(const MojoHandle
* handles
,
49 const MojoWaitFlags
* flags
,
51 MojoDeadline deadline
) {
52 return g_core
->WaitMany(handles
, flags
, num_handles
, deadline
);
55 MojoResult
MojoCreateMessagePipe(MojoHandle
* message_pipe_handle0
,
56 MojoHandle
* message_pipe_handle1
) {
57 return g_core
->CreateMessagePipe(message_pipe_handle0
, message_pipe_handle1
);
60 MojoResult
MojoWriteMessage(MojoHandle message_pipe_handle
,
63 const MojoHandle
* handles
,
65 MojoWriteMessageFlags flags
) {
66 return g_core
->WriteMessage(
67 message_pipe_handle
, bytes
, num_bytes
, handles
, num_handles
, flags
);
70 MojoResult
MojoReadMessage(MojoHandle message_pipe_handle
,
74 uint32_t* num_handles
,
75 MojoReadMessageFlags flags
) {
76 return g_core
->ReadMessage(
77 message_pipe_handle
, bytes
, num_bytes
, handles
, num_handles
, flags
);
80 MojoResult
MojoCreateDataPipe(const MojoCreateDataPipeOptions
* options
,
81 MojoHandle
* data_pipe_producer_handle
,
82 MojoHandle
* data_pipe_consumer_handle
) {
83 return g_core
->CreateDataPipe(
84 options
, data_pipe_producer_handle
, data_pipe_consumer_handle
);
87 MojoResult
MojoWriteData(MojoHandle data_pipe_producer_handle
,
89 uint32_t* num_elements
,
90 MojoWriteDataFlags flags
) {
91 return g_core
->WriteData(
92 data_pipe_producer_handle
, elements
, num_elements
, flags
);
95 MojoResult
MojoBeginWriteData(MojoHandle data_pipe_producer_handle
,
97 uint32_t* buffer_num_elements
,
98 MojoWriteDataFlags flags
) {
99 return g_core
->BeginWriteData(
100 data_pipe_producer_handle
, buffer
, buffer_num_elements
, flags
);
103 MojoResult
MojoEndWriteData(MojoHandle data_pipe_producer_handle
,
104 uint32_t num_elements_written
) {
105 return g_core
->EndWriteData(data_pipe_producer_handle
, num_elements_written
);
108 MojoResult
MojoReadData(MojoHandle data_pipe_consumer_handle
,
110 uint32_t* num_elements
,
111 MojoReadDataFlags flags
) {
112 return g_core
->ReadData(
113 data_pipe_consumer_handle
, elements
, num_elements
, flags
);
116 MojoResult
MojoBeginReadData(MojoHandle data_pipe_consumer_handle
,
118 uint32_t* buffer_num_elements
,
119 MojoReadDataFlags flags
) {
120 return g_core
->BeginReadData(
121 data_pipe_consumer_handle
, buffer
, buffer_num_elements
, flags
);
124 MojoResult
MojoEndReadData(MojoHandle data_pipe_consumer_handle
,
125 uint32_t num_elements_read
) {
126 return g_core
->EndReadData(data_pipe_consumer_handle
, num_elements_read
);
129 MojoResult
MojoCreateSharedBuffer(
130 const struct MojoCreateSharedBufferOptions
* options
,
132 MojoHandle
* shared_buffer_handle
) {
133 return g_core
->CreateSharedBuffer(options
, num_bytes
, shared_buffer_handle
);
136 MojoResult
MojoDuplicateBufferHandle(
137 MojoHandle buffer_handle
,
138 const struct MojoDuplicateBufferHandleOptions
* options
,
139 MojoHandle
* new_buffer_handle
) {
140 return g_core
->DuplicateBufferHandle(
141 buffer_handle
, options
, new_buffer_handle
);
144 MojoResult
MojoMapBuffer(MojoHandle buffer_handle
,
148 MojoMapBufferFlags flags
) {
149 return g_core
->MapBuffer(buffer_handle
, offset
, num_bytes
, buffer
, flags
);
152 MojoResult
MojoUnmapBuffer(void* buffer
) {
153 return g_core
->UnmapBuffer(buffer
);