Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: mojo/public/platform/native/system_thunks.cc

Issue 231353002: Make mojo_system static and mojo_system_impl a component, never use both (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Get content builds to work Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 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/public/system/core_private.h" 5 #include "mojo/public/platform/native/system_thunks.h"
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <stddef.h>
9
10 static mojo::Core* g_core = NULL;
11 8
12 extern "C" { 9 extern "C" {
13 10
11 static MojoSystemThunks g_thunks = {0};
viettrungluu 2014/04/10 19:38:06 g_system_thunks? (optional; I don't really care)
12
14 MojoTimeTicks MojoGetTimeTicksNow() { 13 MojoTimeTicks MojoGetTimeTicksNow() {
15 assert(g_core); 14 assert(g_thunks.GetTimeTicksNow);
16 return g_core->GetTimeTicksNow(); 15 return g_thunks.GetTimeTicksNow();
17 } 16 }
18 17
19 MojoResult MojoClose(MojoHandle handle) { 18 MojoResult MojoClose(MojoHandle handle) {
20 assert(g_core); 19 assert(g_thunks.Close);
21 return g_core->Close(handle); 20 return g_thunks.Close(handle);
22 } 21 }
23 22
24 MojoResult MojoWait(MojoHandle handle, 23 MojoResult MojoWait(MojoHandle handle,
25 MojoWaitFlags flags, 24 MojoWaitFlags flags,
26 MojoDeadline deadline) { 25 MojoDeadline deadline) {
27 assert(g_core); 26 assert(g_thunks.Wait);
28 return g_core->Wait(handle, flags, deadline); 27 return g_thunks.Wait(handle, flags, deadline);
29 } 28 }
30 29
31 MojoResult MojoWaitMany(const MojoHandle* handles, 30 MojoResult MojoWaitMany(const MojoHandle* handles,
32 const MojoWaitFlags* flags, 31 const MojoWaitFlags* flags,
33 uint32_t num_handles, 32 uint32_t num_handles,
34 MojoDeadline deadline) { 33 MojoDeadline deadline) {
35 assert(g_core); 34 assert(g_thunks.WaitMany);
36 return g_core->WaitMany(handles, flags, num_handles, deadline); 35 return g_thunks.WaitMany(handles, flags, num_handles, deadline);
37 } 36 }
38 37
39 MojoResult MojoCreateMessagePipe(MojoHandle* message_pipe_handle0, 38 MojoResult MojoCreateMessagePipe(MojoHandle* message_pipe_handle0,
40 MojoHandle* message_pipe_handle1) { 39 MojoHandle* message_pipe_handle1) {
41 assert(g_core); 40 assert(g_thunks.CreateMessagePipe);
42 return g_core->CreateMessagePipe(message_pipe_handle0, message_pipe_handle1); 41 return g_thunks.CreateMessagePipe(message_pipe_handle0, message_pipe_handle1);
43 } 42 }
44 43
45 MojoResult MojoWriteMessage(MojoHandle message_pipe_handle, 44 MojoResult MojoWriteMessage(MojoHandle message_pipe_handle,
46 const void* bytes, 45 const void* bytes,
47 uint32_t num_bytes, 46 uint32_t num_bytes,
48 const MojoHandle* handles, 47 const MojoHandle* handles,
49 uint32_t num_handles, 48 uint32_t num_handles,
50 MojoWriteMessageFlags flags) { 49 MojoWriteMessageFlags flags) {
51 assert(g_core); 50 assert(g_thunks.WriteMessage);
52 return g_core->WriteMessage(message_pipe_handle, bytes, num_bytes, handles, 51 return g_thunks.WriteMessage(message_pipe_handle, bytes, num_bytes, handles,
53 num_handles, flags); 52 num_handles, flags);
54 } 53 }
55 54
56 MojoResult MojoReadMessage(MojoHandle message_pipe_handle, 55 MojoResult MojoReadMessage(MojoHandle message_pipe_handle,
57 void* bytes, 56 void* bytes,
58 uint32_t* num_bytes, 57 uint32_t* num_bytes,
59 MojoHandle* handles, 58 MojoHandle* handles,
60 uint32_t* num_handles, 59 uint32_t* num_handles,
61 MojoReadMessageFlags flags) { 60 MojoReadMessageFlags flags) {
62 assert(g_core); 61 assert(g_thunks.ReadMessage);
63 return g_core->ReadMessage(message_pipe_handle, bytes, num_bytes, handles, 62 return g_thunks.ReadMessage(message_pipe_handle, bytes, num_bytes, handles,
64 num_handles, flags); 63 num_handles, flags);
65 } 64 }
66 65
67 MojoResult MojoCreateDataPipe(const MojoCreateDataPipeOptions* options, 66 MojoResult MojoCreateDataPipe(const MojoCreateDataPipeOptions* options,
68 MojoHandle* data_pipe_producer_handle, 67 MojoHandle* data_pipe_producer_handle,
69 MojoHandle* data_pipe_consumer_handle) { 68 MojoHandle* data_pipe_consumer_handle) {
70 assert(g_core); 69 assert(g_thunks.CreateDataPipe);
71 return g_core->CreateDataPipe(options, data_pipe_producer_handle, 70 return g_thunks.CreateDataPipe(options, data_pipe_producer_handle,
72 data_pipe_consumer_handle); 71 data_pipe_consumer_handle);
73 } 72 }
74 73
75 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle, 74 MojoResult MojoWriteData(MojoHandle data_pipe_producer_handle,
76 const void* elements, 75 const void* elements,
77 uint32_t* num_elements, 76 uint32_t* num_elements,
78 MojoWriteDataFlags flags) { 77 MojoWriteDataFlags flags) {
79 assert(g_core); 78 assert(g_thunks.WriteData);
80 return g_core->WriteData(data_pipe_producer_handle, elements, num_elements, 79 return g_thunks.WriteData(data_pipe_producer_handle, elements, num_elements,
81 flags); 80 flags);
82 } 81 }
83 82
84 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle, 83 MojoResult MojoBeginWriteData(MojoHandle data_pipe_producer_handle,
85 void** buffer, 84 void** buffer,
86 uint32_t* buffer_num_elements, 85 uint32_t* buffer_num_elements,
87 MojoWriteDataFlags flags) { 86 MojoWriteDataFlags flags) {
88 assert(g_core); 87 assert(g_thunks.BeginWriteData);
89 return g_core->BeginWriteData(data_pipe_producer_handle, buffer, 88 return g_thunks.BeginWriteData(data_pipe_producer_handle, buffer,
90 buffer_num_elements, flags); 89 buffer_num_elements, flags);
91 } 90 }
92 91
93 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle, 92 MojoResult MojoEndWriteData(MojoHandle data_pipe_producer_handle,
94 uint32_t num_elements_written) { 93 uint32_t num_elements_written) {
95 assert(g_core); 94 assert(g_thunks.EndWriteData);
96 return g_core->EndWriteData(data_pipe_producer_handle, num_elements_written); 95 return g_thunks.EndWriteData(data_pipe_producer_handle, num_elements_written);
97 } 96 }
98 97
99 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle, 98 MojoResult MojoReadData(MojoHandle data_pipe_consumer_handle,
100 void* elements, 99 void* elements,
101 uint32_t* num_elements, 100 uint32_t* num_elements,
102 MojoReadDataFlags flags) { 101 MojoReadDataFlags flags) {
103 assert(g_core); 102 assert(g_thunks.ReadData);
104 return g_core->ReadData(data_pipe_consumer_handle, elements, num_elements, 103 return g_thunks.ReadData(data_pipe_consumer_handle, elements, num_elements,
105 flags); 104 flags);
106 } 105 }
107 106
108 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle, 107 MojoResult MojoBeginReadData(MojoHandle data_pipe_consumer_handle,
109 const void** buffer, 108 const void** buffer,
110 uint32_t* buffer_num_elements, 109 uint32_t* buffer_num_elements,
111 MojoReadDataFlags flags) { 110 MojoReadDataFlags flags) {
112 assert(g_core); 111 assert(g_thunks.BeginReadData);
113 return g_core->BeginReadData(data_pipe_consumer_handle, buffer, 112 return g_thunks.BeginReadData(data_pipe_consumer_handle, buffer,
114 buffer_num_elements, flags); 113 buffer_num_elements, flags);
115 } 114 }
116 115
117 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle, 116 MojoResult MojoEndReadData(MojoHandle data_pipe_consumer_handle,
118 uint32_t num_elements_read) { 117 uint32_t num_elements_read) {
119 assert(g_core); 118 assert(g_thunks.EndReadData);
120 return g_core->EndReadData(data_pipe_consumer_handle, num_elements_read); 119 return g_thunks.EndReadData(data_pipe_consumer_handle, num_elements_read);
121 } 120 }
122 121
123 MojoResult MojoCreateSharedBuffer( 122 MojoResult MojoCreateSharedBuffer(
124 const struct MojoCreateSharedBufferOptions* options, 123 const struct MojoCreateSharedBufferOptions* options,
125 uint64_t num_bytes, 124 uint64_t num_bytes,
126 MojoHandle* shared_buffer_handle) { 125 MojoHandle* shared_buffer_handle) {
127 assert(g_core); 126 assert(g_thunks.CreateSharedBuffer);
128 return g_core->CreateSharedBuffer(options, num_bytes, shared_buffer_handle); 127 return g_thunks.CreateSharedBuffer(options, num_bytes, shared_buffer_handle);
129 } 128 }
130 129
131 MojoResult MojoDuplicateBufferHandle( 130 MojoResult MojoDuplicateBufferHandle(
132 MojoHandle buffer_handle, 131 MojoHandle buffer_handle,
133 const struct MojoDuplicateBufferHandleOptions* options, 132 const struct MojoDuplicateBufferHandleOptions* options,
134 MojoHandle* new_buffer_handle) { 133 MojoHandle* new_buffer_handle) {
135 assert(g_core); 134 assert(g_thunks.DuplicateBufferHandle);
136 return g_core->DuplicateBufferHandle(buffer_handle, options, 135 return g_thunks.DuplicateBufferHandle(buffer_handle, options,
137 new_buffer_handle); 136 new_buffer_handle);
138 } 137 }
139 138
140 MojoResult MojoMapBuffer(MojoHandle buffer_handle, 139 MojoResult MojoMapBuffer(MojoHandle buffer_handle,
141 uint64_t offset, 140 uint64_t offset,
142 uint64_t num_bytes, 141 uint64_t num_bytes,
143 void** buffer, 142 void** buffer,
144 MojoMapBufferFlags flags) { 143 MojoMapBufferFlags flags) {
145 assert(g_core); 144 assert(g_thunks.MapBuffer);
146 return g_core->MapBuffer(buffer_handle, offset, num_bytes, buffer, flags); 145 return g_thunks.MapBuffer(buffer_handle, offset, num_bytes, buffer, flags);
147 } 146 }
148 147
149 MojoResult MojoUnmapBuffer(void* buffer) { 148 MojoResult MojoUnmapBuffer(void* buffer) {
150 assert(g_core); 149 assert(g_thunks.UnmapBuffer);
151 return g_core->UnmapBuffer(buffer); 150 return g_thunks.UnmapBuffer(buffer);
151 }
152
153 size_t MojoSetSystemThunks(const MojoSystemThunks* system_thunks) {
154 if (system_thunks->size >= sizeof(g_thunks))
155 g_thunks = *system_thunks;
156 return sizeof(g_thunks);
152 } 157 }
153 158
154 } // extern "C" 159 } // extern "C"
155
156 namespace mojo {
157
158 Core::~Core() {
159 }
160
161 // static
162 void Core::Init(Core* core) {
163 assert(!g_core);
164 g_core = core;
165 }
166
167 // static
168 Core* Core::Get() {
169 return g_core;
170 }
171
172 // static
173 void Core::Reset() {
174 g_core = NULL;
175 }
176
177 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698