Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / mojo / public / platform / native / system_thunks.cc
blobfed6db9d9b981e1bc9450074ce2542104c033438
1 // Copyright 2013 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/public/platform/native/system_thunks.h"
7 #include <assert.h>
9 #include "mojo/public/platform/native/thunk_export.h"
11 extern "C" {
13 static MojoSystemThunks g_thunks = {0};
15 MojoTimeTicks MojoGetTimeTicksNow() {
16 assert(g_thunks.GetTimeTicksNow);
17 return g_thunks.GetTimeTicksNow();
20 MojoResult MojoClose(MojoHandle handle) {
21 assert(g_thunks.Close);
22 return g_thunks.Close(handle);
25 MojoResult MojoWait(MojoHandle handle,
26 MojoHandleSignals signals,
27 MojoDeadline deadline) {
28 assert(g_thunks.Wait);
29 return g_thunks.Wait(handle, signals, deadline);
32 MojoResult MojoWaitMany(const MojoHandle* handles,
33 const MojoHandleSignals* signals,
34 uint32_t num_handles,
35 MojoDeadline deadline) {
36 assert(g_thunks.WaitMany);
37 return g_thunks.WaitMany(handles, signals, num_handles, deadline);
40 MojoResult MojoCreateMessagePipe(const MojoCreateMessagePipeOptions* options,
41 MojoHandle* message_pipe_handle0,
42 MojoHandle* message_pipe_handle1) {
43 assert(g_thunks.CreateMessagePipe);
44 return g_thunks.CreateMessagePipe(options, message_pipe_handle0,
45 message_pipe_handle1);
48 MojoResult MojoWriteMessage(MojoHandle message_pipe_handle,
49 const void* bytes,
50 uint32_t num_bytes,
51 const MojoHandle* handles,
52 uint32_t num_handles,
53 MojoWriteMessageFlags flags) {
54 assert(g_thunks.WriteMessage);
55 return g_thunks.WriteMessage(message_pipe_handle, bytes, num_bytes, handles,
56 num_handles, flags);
59 MojoResult MojoReadMessage(MojoHandle message_pipe_handle,
60 void* bytes,
61 uint32_t* num_bytes,
62 MojoHandle* handles,
63 uint32_t* num_handles,
64 MojoReadMessageFlags flags) {
65 assert(g_thunks.ReadMessage);
66 return g_thunks.ReadMessage(message_pipe_handle, bytes, num_bytes, handles,
67 num_handles, flags);
70 MojoResult MojoCreateDataPipe(const MojoCreateDataPipeOptions* options,
71 MojoHandle* data_pipe_producer_handle,
72 MojoHandle* data_pipe_consumer_handle) {
73 assert(g_thunks.CreateDataPipe);
74 return g_thunks.CreateDataPipe(options, data_pipe_producer_handle,
75 data_pipe_consumer_handle);
78 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle,
79 const void* elements,
80 uint32_t* num_elements,
81 MojoWriteDataFlags flags) {
82 assert(g_thunks.WriteData);
83 return g_thunks.WriteData(data_pipe_producer_handle, elements, num_elements,
84 flags);
87 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle,
88 void** buffer,
89 uint32_t* buffer_num_elements,
90 MojoWriteDataFlags flags) {
91 assert(g_thunks.BeginWriteData);
92 return g_thunks.BeginWriteData(data_pipe_producer_handle, buffer,
93 buffer_num_elements, flags);
96 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle,
97 uint32_t num_elements_written) {
98 assert(g_thunks.EndWriteData);
99 return g_thunks.EndWriteData(data_pipe_producer_handle, num_elements_written);
102 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle,
103 void* elements,
104 uint32_t* num_elements,
105 MojoReadDataFlags flags) {
106 assert(g_thunks.ReadData);
107 return g_thunks.ReadData(data_pipe_consumer_handle, elements, num_elements,
108 flags);
111 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle,
112 const void** buffer,
113 uint32_t* buffer_num_elements,
114 MojoReadDataFlags flags) {
115 assert(g_thunks.BeginReadData);
116 return g_thunks.BeginReadData(data_pipe_consumer_handle, buffer,
117 buffer_num_elements, flags);
120 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle,
121 uint32_t num_elements_read) {
122 assert(g_thunks.EndReadData);
123 return g_thunks.EndReadData(data_pipe_consumer_handle, num_elements_read);
126 MojoResult MojoCreateSharedBuffer(
127 const struct MojoCreateSharedBufferOptions* options,
128 uint64_t num_bytes,
129 MojoHandle* shared_buffer_handle) {
130 assert(g_thunks.CreateSharedBuffer);
131 return g_thunks.CreateSharedBuffer(options, num_bytes, shared_buffer_handle);
134 MojoResult MojoDuplicateBufferHandle(
135 MojoHandle buffer_handle,
136 const struct MojoDuplicateBufferHandleOptions* options,
137 MojoHandle* new_buffer_handle) {
138 assert(g_thunks.DuplicateBufferHandle);
139 return g_thunks.DuplicateBufferHandle(buffer_handle, options,
140 new_buffer_handle);
143 MojoResult MojoMapBuffer(MojoHandle buffer_handle,
144 uint64_t offset,
145 uint64_t num_bytes,
146 void** buffer,
147 MojoMapBufferFlags flags) {
148 assert(g_thunks.MapBuffer);
149 return g_thunks.MapBuffer(buffer_handle, offset, num_bytes, buffer, flags);
152 MojoResult MojoUnmapBuffer(void* buffer) {
153 assert(g_thunks.UnmapBuffer);
154 return g_thunks.UnmapBuffer(buffer);
157 extern "C" THUNK_EXPORT size_t MojoSetSystemThunks(
158 const MojoSystemThunks* system_thunks) {
159 if (system_thunks->size >= sizeof(g_thunks))
160 g_thunks = *system_thunks;
161 return sizeof(g_thunks);
164 } // extern "C"