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

Side by Side Diff: mojo/nacl/sfi/nacl_bindings/mojo_syscall.cc

Issue 1778753002: Implement MojoGetBufferInformation(), part 3. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 9 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 // WARNING this file was generated by generate_nacl_bindings.py 5 // WARNING this file was generated by generate_nacl_bindings.py
6 // Do not edit by hand. 6 // Do not edit by hand.
7 7
8 #include "mojo/nacl/sfi/nacl_bindings/mojo_syscall.h" 8 #include "mojo/nacl/sfi/nacl_bindings/mojo_syscall.h"
9 9
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 30 matching lines...) Expand all
41 uint32_t volatile* params = static_cast<uint32_t volatile*>(msg->iov[0].base); 41 uint32_t volatile* params = static_cast<uint32_t volatile*>(msg->iov[0].base);
42 size_t num_params = msg->iov[0].length / sizeof(*params); 42 size_t num_params = msg->iov[0].length / sizeof(*params);
43 43
44 if (num_params < 1) { 44 if (num_params < 1) {
45 return -1; 45 return -1;
46 } 46 }
47 47
48 uint32_t msg_type = params[0]; 48 uint32_t msg_type = params[0];
49 switch (msg_type) { 49 switch (msg_type) {
50 case 0: { 50 case 0: {
51 if (num_params != 3) {
viettrungluu 2016/03/09 00:51:04 This enormous diff is nearly entirely due to reord
52 return -1;
53 }
54 MojoHandle volatile* handle_ptr;
55 MojoHandle handle_value;
56 MojoResult volatile* result_ptr;
57 MojoResult result_value;
58 {
59 ScopedCopyLock copy_lock(nap);
60 if (!ConvertScalarInOut(nap, params[1], false, &handle_value,
61 &handle_ptr)) {
62 return -1;
63 }
64 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
65 return -1;
66 }
67 }
68
69 result_value = _MojoGetInitialHandle(&handle_value);
70
71 {
72 ScopedCopyLock copy_lock(nap);
73 *handle_ptr = handle_value;
74 *result_ptr = result_value;
75 }
76
77 return 0;
78 }
79 case 1: {
80 if (num_params != 2) {
81 return -1;
82 }
83 MojoTimeTicks volatile* result_ptr;
84 MojoTimeTicks result_value;
85 {
86 ScopedCopyLock copy_lock(nap);
87 if (!ConvertScalarOutput(nap, params[1], false, &result_ptr)) {
88 return -1;
89 }
90 }
91
92 result_value = MojoSystemImplGetTimeTicksNow(g_mojo_system);
93
94 {
95 ScopedCopyLock copy_lock(nap);
96 *result_ptr = result_value;
97 }
98
99 return 0;
100 }
101 case 2: {
102 if (num_params != 3) {
103 return -1;
104 }
105 MojoHandle handle_value;
106 MojoResult volatile* result_ptr;
107 MojoResult result_value;
108 {
109 ScopedCopyLock copy_lock(nap);
110 if (!ConvertScalarInput(nap, params[1], &handle_value)) {
111 return -1;
112 }
113 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
114 return -1;
115 }
116 }
117
118 result_value = MojoSystemImplClose(g_mojo_system, handle_value);
119
120 {
121 ScopedCopyLock copy_lock(nap);
122 *result_ptr = result_value;
123 }
124
125 return 0;
126 }
127 case 3: {
128 if (num_params != 6) {
129 return -1;
130 }
131 MojoHandle handle_value;
132 MojoHandleSignals signals_value;
133 MojoDeadline deadline_value;
134 MojoHandleSignalsState volatile* signals_state_ptr;
135 MojoHandleSignalsState signals_state_value;
136 MojoResult volatile* result_ptr;
137 MojoResult result_value;
138 {
139 ScopedCopyLock copy_lock(nap);
140 if (!ConvertScalarInput(nap, params[1], &handle_value)) {
141 return -1;
142 }
143 if (!ConvertScalarInput(nap, params[2], &signals_value)) {
144 return -1;
145 }
146 if (!ConvertScalarInput(nap, params[3], &deadline_value)) {
147 return -1;
148 }
149 if (!ConvertScalarOutput(nap, params[4], true, &signals_state_ptr)) {
150 return -1;
151 }
152 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
153 return -1;
154 }
155 }
156
157 result_value = MojoSystemImplWait(
158 g_mojo_system, handle_value, signals_value, deadline_value,
159 signals_state_ptr ? &signals_state_value : nullptr);
160
161 {
162 ScopedCopyLock copy_lock(nap);
163 if (signals_state_ptr) {
164 memcpy_volatile_out(signals_state_ptr, &signals_state_value,
165 sizeof(MojoHandleSignalsState));
166 }
167 *result_ptr = result_value;
168 }
169
170 return 0;
171 }
172 case 4: {
173 if (num_params != 8) {
174 return -1;
175 }
176 const MojoHandle* handles;
177 const MojoHandleSignals* signals;
178 uint32_t num_handles_value;
179 MojoDeadline deadline_value;
180 uint32_t volatile* result_index_ptr;
181 uint32_t result_index_value;
182 struct MojoHandleSignalsState* signals_states;
183 MojoResult volatile* result_ptr;
184 MojoResult result_value;
185 {
186 ScopedCopyLock copy_lock(nap);
187 if (!ConvertScalarInput(nap, params[3], &num_handles_value)) {
188 return -1;
189 }
190 if (!ConvertScalarInput(nap, params[4], &deadline_value)) {
191 return -1;
192 }
193 if (!ConvertScalarInOut(nap, params[5], true, &result_index_value,
194 &result_index_ptr)) {
195 return -1;
196 }
197 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
198 return -1;
199 }
200 if (!ConvertArray(nap, params[1], num_handles_value, sizeof(*handles),
201 false, &handles)) {
202 return -1;
203 }
204 if (!ConvertArray(nap, params[2], num_handles_value, sizeof(*signals),
205 false, &signals)) {
206 return -1;
207 }
208 if (!ConvertArray(nap, params[6], num_handles_value,
209 sizeof(*signals_states), true, &signals_states)) {
210 return -1;
211 }
212 }
213
214 result_value = MojoSystemImplWaitMany(
215 g_mojo_system, handles, signals, num_handles_value, deadline_value,
216 result_index_ptr ? &result_index_value : nullptr, signals_states);
217
218 {
219 ScopedCopyLock copy_lock(nap);
220 if (result_index_ptr) {
221 *result_index_ptr = result_index_value;
222 }
223 *result_ptr = result_value;
224 }
225
226 return 0;
227 }
228 case 5: {
51 if (num_params != 5) { 229 if (num_params != 5) {
52 return -1; 230 return -1;
53 } 231 }
54 const struct MojoCreateSharedBufferOptions* options; 232 const struct MojoCreateMessagePipeOptions* options;
55 uint64_t num_bytes_value; 233 MojoHandle volatile* message_pipe_handle0_ptr;
56 MojoHandle volatile* shared_buffer_handle_ptr; 234 MojoHandle message_pipe_handle0_value;
57 MojoHandle shared_buffer_handle_value; 235 MojoHandle volatile* message_pipe_handle1_ptr;
236 MojoHandle message_pipe_handle1_value;
58 MojoResult volatile* result_ptr; 237 MojoResult volatile* result_ptr;
59 MojoResult result_value; 238 MojoResult result_value;
60 { 239 {
61 ScopedCopyLock copy_lock(nap); 240 ScopedCopyLock copy_lock(nap);
62 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) { 241 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) {
63 return -1; 242 return -1;
64 } 243 }
65 if (!ConvertScalarInput(nap, params[2], &num_bytes_value)) { 244 if (!ConvertScalarInOut(nap, params[2], false,
245 &message_pipe_handle0_value,
246 &message_pipe_handle0_ptr)) {
66 return -1; 247 return -1;
67 } 248 }
68 if (!ConvertScalarInOut(nap, params[3], false, 249 if (!ConvertScalarInOut(nap, params[3], false,
69 &shared_buffer_handle_value, 250 &message_pipe_handle1_value,
70 &shared_buffer_handle_ptr)) { 251 &message_pipe_handle1_ptr)) {
71 return -1; 252 return -1;
72 } 253 }
73 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 254 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
74 return -1; 255 return -1;
75 } 256 }
76 } 257 }
77 258
78 result_value = MojoSystemImplCreateSharedBuffer( 259 result_value = MojoSystemImplCreateMessagePipe(
79 g_mojo_system, options, num_bytes_value, &shared_buffer_handle_value); 260 g_mojo_system, options, &message_pipe_handle0_value,
80 261 &message_pipe_handle1_value);
81 { 262
82 ScopedCopyLock copy_lock(nap); 263 {
83 *shared_buffer_handle_ptr = shared_buffer_handle_value; 264 ScopedCopyLock copy_lock(nap);
84 *result_ptr = result_value; 265 *message_pipe_handle0_ptr = message_pipe_handle0_value;
85 } 266 *message_pipe_handle1_ptr = message_pipe_handle1_value;
86 267 *result_ptr = result_value;
87 return 0; 268 }
88 } 269
89 case 1: { 270 return 0;
90 if (num_params != 5) { 271 }
91 return -1; 272 case 6: {
92 } 273 if (num_params != 8) {
93 MojoHandle buffer_handle_value; 274 return -1;
94 const struct MojoDuplicateBufferHandleOptions* options; 275 }
95 MojoHandle volatile* new_buffer_handle_ptr; 276 MojoHandle message_pipe_handle_value;
96 MojoHandle new_buffer_handle_value; 277 const void* bytes;
97 MojoResult volatile* result_ptr;
98 MojoResult result_value;
99 {
100 ScopedCopyLock copy_lock(nap);
101 if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) {
102 return -1;
103 }
104 if (!ConvertExtensibleStructInput(nap, params[2], true, &options)) {
105 return -1;
106 }
107 if (!ConvertScalarInOut(nap, params[3], false, &new_buffer_handle_value,
108 &new_buffer_handle_ptr)) {
109 return -1;
110 }
111 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
112 return -1;
113 }
114 }
115
116 result_value = MojoSystemImplDuplicateBufferHandle(
117 g_mojo_system, buffer_handle_value, options,
118 &new_buffer_handle_value);
119
120 {
121 ScopedCopyLock copy_lock(nap);
122 *new_buffer_handle_ptr = new_buffer_handle_value;
123 *result_ptr = result_value;
124 }
125
126 return 0;
127 }
128 case 2:
129 fprintf(stderr, "MojoMapBuffer not implemented\n");
130 return -1;
131 case 3:
132 fprintf(stderr, "MojoUnmapBuffer not implemented\n");
133 return -1;
134 case 4: {
135 if (num_params != 5) {
136 return -1;
137 }
138 const struct MojoCreateDataPipeOptions* options;
139 MojoHandle volatile* data_pipe_producer_handle_ptr;
140 MojoHandle data_pipe_producer_handle_value;
141 MojoHandle volatile* data_pipe_consumer_handle_ptr;
142 MojoHandle data_pipe_consumer_handle_value;
143 MojoResult volatile* result_ptr;
144 MojoResult result_value;
145 {
146 ScopedCopyLock copy_lock(nap);
147 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) {
148 return -1;
149 }
150 if (!ConvertScalarInOut(nap, params[2], false,
151 &data_pipe_producer_handle_value,
152 &data_pipe_producer_handle_ptr)) {
153 return -1;
154 }
155 if (!ConvertScalarInOut(nap, params[3], false,
156 &data_pipe_consumer_handle_value,
157 &data_pipe_consumer_handle_ptr)) {
158 return -1;
159 }
160 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
161 return -1;
162 }
163 }
164
165 result_value = MojoSystemImplCreateDataPipe(
166 g_mojo_system, options, &data_pipe_producer_handle_value,
167 &data_pipe_consumer_handle_value);
168
169 {
170 ScopedCopyLock copy_lock(nap);
171 *data_pipe_producer_handle_ptr = data_pipe_producer_handle_value;
172 *data_pipe_consumer_handle_ptr = data_pipe_consumer_handle_value;
173 *result_ptr = result_value;
174 }
175
176 return 0;
177 }
178 case 5: {
179 if (num_params != 6) {
180 return -1;
181 }
182 MojoHandle data_pipe_producer_handle_value;
183 const void* elements;
184 uint32_t volatile* num_bytes_ptr;
185 uint32_t num_bytes_value; 278 uint32_t num_bytes_value;
186 MojoWriteDataFlags flags_value; 279 const MojoHandle* handles;
187 MojoResult volatile* result_ptr; 280 uint32_t num_handles_value;
188 MojoResult result_value; 281 MojoWriteMessageFlags flags_value;
189 { 282 MojoResult volatile* result_ptr;
190 ScopedCopyLock copy_lock(nap); 283 MojoResult result_value;
191 if (!ConvertScalarInput(nap, params[1], 284 {
192 &data_pipe_producer_handle_value)) { 285 ScopedCopyLock copy_lock(nap);
193 return -1; 286 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) {
194 } 287 return -1;
195 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value, 288 }
196 &num_bytes_ptr)) { 289 if (!ConvertScalarInput(nap, params[3], &num_bytes_value)) {
197 return -1; 290 return -1;
198 } 291 }
199 if (!ConvertScalarInput(nap, params[4], &flags_value)) { 292 if (!ConvertScalarInput(nap, params[5], &num_handles_value)) {
200 return -1; 293 return -1;
201 } 294 }
202 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 295 if (!ConvertScalarInput(nap, params[6], &flags_value)) {
203 return -1; 296 return -1;
204 } 297 }
205 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false, 298 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
206 &elements)) { 299 return -1;
207 return -1; 300 }
208 } 301 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
209 } 302 return -1;
210 303 }
211 result_value = MojoSystemImplWriteData( 304 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
212 g_mojo_system, data_pipe_producer_handle_value, elements, 305 true, &handles)) {
213 &num_bytes_value, flags_value); 306 return -1;
214 307 }
215 { 308 }
216 ScopedCopyLock copy_lock(nap); 309
217 *num_bytes_ptr = num_bytes_value; 310 result_value = MojoSystemImplWriteMessage(
218 *result_ptr = result_value; 311 g_mojo_system, message_pipe_handle_value, bytes, num_bytes_value,
219 } 312 handles, num_handles_value, flags_value);
220 313
221 return 0; 314 {
222 } 315 ScopedCopyLock copy_lock(nap);
223 case 6:
224 fprintf(stderr, "MojoBeginWriteData not implemented\n");
225 return -1;
226 case 7: {
227 if (num_params != 4) {
228 return -1;
229 }
230 MojoHandle data_pipe_producer_handle_value;
231 uint32_t num_bytes_written_value;
232 MojoResult volatile* result_ptr;
233 MojoResult result_value;
234 {
235 ScopedCopyLock copy_lock(nap);
236 if (!ConvertScalarInput(nap, params[1],
237 &data_pipe_producer_handle_value)) {
238 return -1;
239 }
240 if (!ConvertScalarInput(nap, params[2], &num_bytes_written_value)) {
241 return -1;
242 }
243 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) {
244 return -1;
245 }
246 }
247
248 result_value = MojoSystemImplEndWriteData(g_mojo_system,
249 data_pipe_producer_handle_value,
250 num_bytes_written_value);
251
252 {
253 ScopedCopyLock copy_lock(nap);
254 *result_ptr = result_value; 316 *result_ptr = result_value;
255 } 317 }
256 318
257 return 0; 319 return 0;
258 } 320 }
321 case 7: {
322 if (num_params != 8) {
323 return -1;
324 }
325 MojoHandle message_pipe_handle_value;
326 void* bytes;
327 uint32_t volatile* num_bytes_ptr;
328 uint32_t num_bytes_value;
329 MojoHandle* handles;
330 uint32_t volatile* num_handles_ptr;
331 uint32_t num_handles_value;
332 MojoReadMessageFlags flags_value;
333 MojoResult volatile* result_ptr;
334 MojoResult result_value;
335 {
336 ScopedCopyLock copy_lock(nap);
337 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) {
338 return -1;
339 }
340 if (!ConvertScalarInOut(nap, params[3], true, &num_bytes_value,
341 &num_bytes_ptr)) {
342 return -1;
343 }
344 if (!ConvertScalarInOut(nap, params[5], true, &num_handles_value,
345 &num_handles_ptr)) {
346 return -1;
347 }
348 if (!ConvertScalarInput(nap, params[6], &flags_value)) {
349 return -1;
350 }
351 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
352 return -1;
353 }
354 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
355 return -1;
356 }
357 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
358 true, &handles)) {
359 return -1;
360 }
361 }
362
363 result_value = MojoSystemImplReadMessage(
364 g_mojo_system, message_pipe_handle_value, bytes,
365 num_bytes_ptr ? &num_bytes_value : nullptr, handles,
366 num_handles_ptr ? &num_handles_value : nullptr, flags_value);
367
368 {
369 ScopedCopyLock copy_lock(nap);
370 if (num_bytes_ptr) {
371 *num_bytes_ptr = num_bytes_value;
372 }
373 if (num_handles_ptr) {
374 *num_handles_ptr = num_handles_value;
375 }
376 *result_ptr = result_value;
377 }
378
379 return 0;
380 }
259 case 8: { 381 case 8: {
382 if (num_params != 5) {
383 return -1;
384 }
385 const struct MojoCreateDataPipeOptions* options;
386 MojoHandle volatile* data_pipe_producer_handle_ptr;
387 MojoHandle data_pipe_producer_handle_value;
388 MojoHandle volatile* data_pipe_consumer_handle_ptr;
389 MojoHandle data_pipe_consumer_handle_value;
390 MojoResult volatile* result_ptr;
391 MojoResult result_value;
392 {
393 ScopedCopyLock copy_lock(nap);
394 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) {
395 return -1;
396 }
397 if (!ConvertScalarInOut(nap, params[2], false,
398 &data_pipe_producer_handle_value,
399 &data_pipe_producer_handle_ptr)) {
400 return -1;
401 }
402 if (!ConvertScalarInOut(nap, params[3], false,
403 &data_pipe_consumer_handle_value,
404 &data_pipe_consumer_handle_ptr)) {
405 return -1;
406 }
407 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
408 return -1;
409 }
410 }
411
412 result_value = MojoSystemImplCreateDataPipe(
413 g_mojo_system, options, &data_pipe_producer_handle_value,
414 &data_pipe_consumer_handle_value);
415
416 {
417 ScopedCopyLock copy_lock(nap);
418 *data_pipe_producer_handle_ptr = data_pipe_producer_handle_value;
419 *data_pipe_consumer_handle_ptr = data_pipe_consumer_handle_value;
420 *result_ptr = result_value;
421 }
422
423 return 0;
424 }
425 case 9: {
260 if (num_params != 6) { 426 if (num_params != 6) {
261 return -1; 427 return -1;
262 } 428 }
263 MojoHandle data_pipe_consumer_handle_value; 429 MojoHandle data_pipe_producer_handle_value;
264 void* elements; 430 const void* elements;
265 uint32_t volatile* num_bytes_ptr; 431 uint32_t volatile* num_bytes_ptr;
266 uint32_t num_bytes_value; 432 uint32_t num_bytes_value;
267 MojoReadDataFlags flags_value; 433 MojoWriteDataFlags flags_value;
268 MojoResult volatile* result_ptr; 434 MojoResult volatile* result_ptr;
269 MojoResult result_value; 435 MojoResult result_value;
270 { 436 {
271 ScopedCopyLock copy_lock(nap); 437 ScopedCopyLock copy_lock(nap);
272 if (!ConvertScalarInput(nap, params[1], 438 if (!ConvertScalarInput(nap, params[1],
273 &data_pipe_consumer_handle_value)) { 439 &data_pipe_producer_handle_value)) {
274 return -1; 440 return -1;
275 } 441 }
276 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value, 442 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value,
277 &num_bytes_ptr)) { 443 &num_bytes_ptr)) {
278 return -1; 444 return -1;
279 } 445 }
280 if (!ConvertScalarInput(nap, params[4], &flags_value)) { 446 if (!ConvertScalarInput(nap, params[4], &flags_value)) {
281 return -1; 447 return -1;
282 } 448 }
283 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 449 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
284 return -1; 450 return -1;
285 } 451 }
286 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false, 452 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false,
287 &elements)) { 453 &elements)) {
288 return -1; 454 return -1;
289 } 455 }
290 } 456 }
291 457
292 result_value = 458 result_value = MojoSystemImplWriteData(
293 MojoSystemImplReadData(g_mojo_system, data_pipe_consumer_handle_value, 459 g_mojo_system, data_pipe_producer_handle_value, elements,
294 elements, &num_bytes_value, flags_value); 460 &num_bytes_value, flags_value);
295 461
296 { 462 {
297 ScopedCopyLock copy_lock(nap); 463 ScopedCopyLock copy_lock(nap);
298 *num_bytes_ptr = num_bytes_value; 464 *num_bytes_ptr = num_bytes_value;
299 *result_ptr = result_value; 465 *result_ptr = result_value;
300 } 466 }
301 467
302 return 0; 468 return 0;
303 } 469 }
304 case 9: 470 case 10:
305 fprintf(stderr, "MojoBeginReadData not implemented\n"); 471 fprintf(stderr, "MojoBeginWriteData not implemented\n");
306 return -1; 472 return -1;
307 case 10: { 473 case 11: {
308 if (num_params != 4) { 474 if (num_params != 4) {
309 return -1; 475 return -1;
310 } 476 }
311 MojoHandle data_pipe_consumer_handle_value; 477 MojoHandle data_pipe_producer_handle_value;
312 uint32_t num_bytes_read_value; 478 uint32_t num_bytes_written_value;
313 MojoResult volatile* result_ptr; 479 MojoResult volatile* result_ptr;
314 MojoResult result_value; 480 MojoResult result_value;
315 { 481 {
316 ScopedCopyLock copy_lock(nap); 482 ScopedCopyLock copy_lock(nap);
317 if (!ConvertScalarInput(nap, params[1], 483 if (!ConvertScalarInput(nap, params[1],
318 &data_pipe_consumer_handle_value)) { 484 &data_pipe_producer_handle_value)) {
319 return -1; 485 return -1;
320 } 486 }
321 if (!ConvertScalarInput(nap, params[2], &num_bytes_read_value)) { 487 if (!ConvertScalarInput(nap, params[2], &num_bytes_written_value)) {
322 return -1; 488 return -1;
323 } 489 }
324 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) { 490 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) {
325 return -1; 491 return -1;
326 } 492 }
327 } 493 }
328 494
329 result_value = MojoSystemImplEndReadData( 495 result_value = MojoSystemImplEndWriteData(g_mojo_system,
330 g_mojo_system, data_pipe_consumer_handle_value, num_bytes_read_value); 496 data_pipe_producer_handle_value,
497 num_bytes_written_value);
331 498
332 { 499 {
333 ScopedCopyLock copy_lock(nap); 500 ScopedCopyLock copy_lock(nap);
334 *result_ptr = result_value;
335 }
336
337 return 0;
338 }
339 case 11: {
340 if (num_params != 2) {
341 return -1;
342 }
343 MojoTimeTicks volatile* result_ptr;
344 MojoTimeTicks result_value;
345 {
346 ScopedCopyLock copy_lock(nap);
347 if (!ConvertScalarOutput(nap, params[1], false, &result_ptr)) {
348 return -1;
349 }
350 }
351
352 result_value = MojoSystemImplGetTimeTicksNow(g_mojo_system);
353
354 {
355 ScopedCopyLock copy_lock(nap);
356 *result_ptr = result_value;
357 }
358
359 return 0;
360 }
361 case 12: {
362 if (num_params != 3) {
363 return -1;
364 }
365 MojoHandle handle_value;
366 MojoResult volatile* result_ptr;
367 MojoResult result_value;
368 {
369 ScopedCopyLock copy_lock(nap);
370 if (!ConvertScalarInput(nap, params[1], &handle_value)) {
371 return -1;
372 }
373 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
374 return -1;
375 }
376 }
377
378 result_value = MojoSystemImplClose(g_mojo_system, handle_value);
379
380 {
381 ScopedCopyLock copy_lock(nap);
382 *result_ptr = result_value; 501 *result_ptr = result_value;
383 } 502 }
384 503
385 return 0; 504 return 0;
386 } 505 }
387 case 13: { 506 case 12: {
388 if (num_params != 6) { 507 if (num_params != 6) {
389 return -1; 508 return -1;
390 } 509 }
391 MojoHandle handle_value; 510 MojoHandle data_pipe_consumer_handle_value;
392 MojoHandleSignals signals_value; 511 void* elements;
393 MojoDeadline deadline_value; 512 uint32_t volatile* num_bytes_ptr;
394 MojoHandleSignalsState volatile* signals_state_ptr; 513 uint32_t num_bytes_value;
395 MojoHandleSignalsState signals_state_value; 514 MojoReadDataFlags flags_value;
396 MojoResult volatile* result_ptr; 515 MojoResult volatile* result_ptr;
397 MojoResult result_value; 516 MojoResult result_value;
398 { 517 {
399 ScopedCopyLock copy_lock(nap); 518 ScopedCopyLock copy_lock(nap);
400 if (!ConvertScalarInput(nap, params[1], &handle_value)) { 519 if (!ConvertScalarInput(nap, params[1],
520 &data_pipe_consumer_handle_value)) {
401 return -1; 521 return -1;
402 } 522 }
403 if (!ConvertScalarInput(nap, params[2], &signals_value)) { 523 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value,
524 &num_bytes_ptr)) {
404 return -1; 525 return -1;
405 } 526 }
406 if (!ConvertScalarInput(nap, params[3], &deadline_value)) { 527 if (!ConvertScalarInput(nap, params[4], &flags_value)) {
407 return -1;
408 }
409 if (!ConvertScalarOutput(nap, params[4], true, &signals_state_ptr)) {
410 return -1; 528 return -1;
411 } 529 }
412 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 530 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
413 return -1; 531 return -1;
414 } 532 }
533 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false,
534 &elements)) {
535 return -1;
536 }
415 } 537 }
416 538
417 result_value = MojoSystemImplWait( 539 result_value =
418 g_mojo_system, handle_value, signals_value, deadline_value, 540 MojoSystemImplReadData(g_mojo_system, data_pipe_consumer_handle_value,
419 signals_state_ptr ? &signals_state_value : nullptr); 541 elements, &num_bytes_value, flags_value);
420 542
421 { 543 {
422 ScopedCopyLock copy_lock(nap); 544 ScopedCopyLock copy_lock(nap);
423 if (signals_state_ptr) { 545 *num_bytes_ptr = num_bytes_value;
424 memcpy_volatile_out(signals_state_ptr, &signals_state_value,
425 sizeof(MojoHandleSignalsState));
426 }
427 *result_ptr = result_value; 546 *result_ptr = result_value;
428 } 547 }
429 548
430 return 0; 549 return 0;
431 } 550 }
551 case 13:
552 fprintf(stderr, "MojoBeginReadData not implemented\n");
553 return -1;
432 case 14: { 554 case 14: {
433 if (num_params != 8) { 555 if (num_params != 4) {
434 return -1; 556 return -1;
435 } 557 }
436 const MojoHandle* handles; 558 MojoHandle data_pipe_consumer_handle_value;
437 const MojoHandleSignals* signals; 559 uint32_t num_bytes_read_value;
438 uint32_t num_handles_value;
439 MojoDeadline deadline_value;
440 uint32_t volatile* result_index_ptr;
441 uint32_t result_index_value;
442 struct MojoHandleSignalsState* signals_states;
443 MojoResult volatile* result_ptr; 560 MojoResult volatile* result_ptr;
444 MojoResult result_value; 561 MojoResult result_value;
445 { 562 {
446 ScopedCopyLock copy_lock(nap); 563 ScopedCopyLock copy_lock(nap);
447 if (!ConvertScalarInput(nap, params[3], &num_handles_value)) { 564 if (!ConvertScalarInput(nap, params[1],
565 &data_pipe_consumer_handle_value)) {
448 return -1; 566 return -1;
449 } 567 }
450 if (!ConvertScalarInput(nap, params[4], &deadline_value)) { 568 if (!ConvertScalarInput(nap, params[2], &num_bytes_read_value)) {
451 return -1; 569 return -1;
452 } 570 }
453 if (!ConvertScalarInOut(nap, params[5], true, &result_index_value, 571 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) {
454 &result_index_ptr)) {
455 return -1;
456 }
457 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
458 return -1;
459 }
460 if (!ConvertArray(nap, params[1], num_handles_value, sizeof(*handles),
461 false, &handles)) {
462 return -1;
463 }
464 if (!ConvertArray(nap, params[2], num_handles_value, sizeof(*signals),
465 false, &signals)) {
466 return -1;
467 }
468 if (!ConvertArray(nap, params[6], num_handles_value,
469 sizeof(*signals_states), true, &signals_states)) {
470 return -1; 572 return -1;
471 } 573 }
472 } 574 }
473 575
474 result_value = MojoSystemImplWaitMany( 576 result_value = MojoSystemImplEndReadData(
475 g_mojo_system, handles, signals, num_handles_value, deadline_value, 577 g_mojo_system, data_pipe_consumer_handle_value, num_bytes_read_value);
476 result_index_ptr ? &result_index_value : nullptr, signals_states);
477 578
478 { 579 {
479 ScopedCopyLock copy_lock(nap); 580 ScopedCopyLock copy_lock(nap);
480 if (result_index_ptr) {
481 *result_index_ptr = result_index_value;
482 }
483 *result_ptr = result_value; 581 *result_ptr = result_value;
484 } 582 }
485 583
486 return 0; 584 return 0;
487 } 585 }
488 case 15: { 586 case 15: {
489 if (num_params != 5) { 587 if (num_params != 5) {
490 return -1; 588 return -1;
491 } 589 }
492 const struct MojoCreateMessagePipeOptions* options; 590 const struct MojoCreateSharedBufferOptions* options;
493 MojoHandle volatile* message_pipe_handle0_ptr; 591 uint64_t num_bytes_value;
494 MojoHandle message_pipe_handle0_value; 592 MojoHandle volatile* shared_buffer_handle_ptr;
495 MojoHandle volatile* message_pipe_handle1_ptr; 593 MojoHandle shared_buffer_handle_value;
496 MojoHandle message_pipe_handle1_value;
497 MojoResult volatile* result_ptr; 594 MojoResult volatile* result_ptr;
498 MojoResult result_value; 595 MojoResult result_value;
499 { 596 {
500 ScopedCopyLock copy_lock(nap); 597 ScopedCopyLock copy_lock(nap);
501 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) { 598 if (!ConvertExtensibleStructInput(nap, params[1], true, &options)) {
502 return -1; 599 return -1;
503 } 600 }
504 if (!ConvertScalarInOut(nap, params[2], false, 601 if (!ConvertScalarInput(nap, params[2], &num_bytes_value)) {
505 &message_pipe_handle0_value,
506 &message_pipe_handle0_ptr)) {
507 return -1; 602 return -1;
508 } 603 }
509 if (!ConvertScalarInOut(nap, params[3], false, 604 if (!ConvertScalarInOut(nap, params[3], false,
510 &message_pipe_handle1_value, 605 &shared_buffer_handle_value,
511 &message_pipe_handle1_ptr)) { 606 &shared_buffer_handle_ptr)) {
512 return -1; 607 return -1;
513 } 608 }
514 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 609 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
515 return -1; 610 return -1;
516 } 611 }
517 } 612 }
518 613
519 result_value = MojoSystemImplCreateMessagePipe( 614 result_value = MojoSystemImplCreateSharedBuffer(
520 g_mojo_system, options, &message_pipe_handle0_value, 615 g_mojo_system, options, num_bytes_value, &shared_buffer_handle_value);
521 &message_pipe_handle1_value);
522 616
523 { 617 {
524 ScopedCopyLock copy_lock(nap); 618 ScopedCopyLock copy_lock(nap);
525 *message_pipe_handle0_ptr = message_pipe_handle0_value; 619 *shared_buffer_handle_ptr = shared_buffer_handle_value;
526 *message_pipe_handle1_ptr = message_pipe_handle1_value;
527 *result_ptr = result_value; 620 *result_ptr = result_value;
528 } 621 }
529 622
530 return 0; 623 return 0;
531 } 624 }
532 case 16: { 625 case 16: {
533 if (num_params != 8) { 626 if (num_params != 5) {
534 return -1; 627 return -1;
535 } 628 }
536 MojoHandle message_pipe_handle_value; 629 MojoHandle buffer_handle_value;
537 const void* bytes; 630 const struct MojoDuplicateBufferHandleOptions* options;
538 uint32_t num_bytes_value; 631 MojoHandle volatile* new_buffer_handle_ptr;
539 const MojoHandle* handles; 632 MojoHandle new_buffer_handle_value;
540 uint32_t num_handles_value;
541 MojoWriteMessageFlags flags_value;
542 MojoResult volatile* result_ptr; 633 MojoResult volatile* result_ptr;
543 MojoResult result_value; 634 MojoResult result_value;
544 { 635 {
545 ScopedCopyLock copy_lock(nap); 636 ScopedCopyLock copy_lock(nap);
546 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) { 637 if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) {
547 return -1; 638 return -1;
548 } 639 }
549 if (!ConvertScalarInput(nap, params[3], &num_bytes_value)) { 640 if (!ConvertExtensibleStructInput(nap, params[2], true, &options)) {
550 return -1; 641 return -1;
551 } 642 }
552 if (!ConvertScalarInput(nap, params[5], &num_handles_value)) { 643 if (!ConvertScalarInOut(nap, params[3], false, &new_buffer_handle_value,
644 &new_buffer_handle_ptr)) {
553 return -1; 645 return -1;
554 } 646 }
555 if (!ConvertScalarInput(nap, params[6], &flags_value)) { 647 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
556 return -1;
557 }
558 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
559 return -1;
560 }
561 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
562 return -1;
563 }
564 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
565 true, &handles)) {
566 return -1; 648 return -1;
567 } 649 }
568 } 650 }
569 651
570 result_value = MojoSystemImplWriteMessage( 652 result_value = MojoSystemImplDuplicateBufferHandle(
571 g_mojo_system, message_pipe_handle_value, bytes, num_bytes_value, 653 g_mojo_system, buffer_handle_value, options,
572 handles, num_handles_value, flags_value); 654 &new_buffer_handle_value);
655
656 {
657 ScopedCopyLock copy_lock(nap);
658 *new_buffer_handle_ptr = new_buffer_handle_value;
659 *result_ptr = result_value;
660 }
661
662 return 0;
663 }
664 case 17: {
viettrungluu 2016/03/09 00:51:04 This case is the only new one (due to the correspo
665 if (num_params != 5) {
666 return -1;
667 }
668 MojoHandle buffer_handle_value;
669 struct MojoBufferInformation* info;
670 uint32_t info_num_bytes_value;
671 MojoResult volatile* result_ptr;
672 MojoResult result_value;
673 {
674 ScopedCopyLock copy_lock(nap);
675 if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) {
676 return -1;
677 }
678 if (!ConvertScalarInput(nap, params[3], &info_num_bytes_value)) {
679 return -1;
680 }
681 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
682 return -1;
683 }
684 if (!ConvertArray(nap, params[2], info_num_bytes_value, 1, false,
685 &info)) {
686 return -1;
687 }
688 }
689
690 result_value = MojoSystemImplGetBufferInformation(
691 g_mojo_system, buffer_handle_value, info, info_num_bytes_value);
573 692
574 { 693 {
575 ScopedCopyLock copy_lock(nap); 694 ScopedCopyLock copy_lock(nap);
576 *result_ptr = result_value; 695 *result_ptr = result_value;
577 } 696 }
578 697
579 return 0; 698 return 0;
580 } 699 }
581 case 17: { 700 case 18:
582 if (num_params != 8) { 701 fprintf(stderr, "MojoMapBuffer not implemented\n");
583 return -1; 702 return -1;
584 } 703 case 19:
585 MojoHandle message_pipe_handle_value; 704 fprintf(stderr, "MojoUnmapBuffer not implemented\n");
586 void* bytes; 705 return -1;
587 uint32_t volatile* num_bytes_ptr;
588 uint32_t num_bytes_value;
589 MojoHandle* handles;
590 uint32_t volatile* num_handles_ptr;
591 uint32_t num_handles_value;
592 MojoReadMessageFlags flags_value;
593 MojoResult volatile* result_ptr;
594 MojoResult result_value;
595 {
596 ScopedCopyLock copy_lock(nap);
597 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) {
598 return -1;
599 }
600 if (!ConvertScalarInOut(nap, params[3], true, &num_bytes_value,
601 &num_bytes_ptr)) {
602 return -1;
603 }
604 if (!ConvertScalarInOut(nap, params[5], true, &num_handles_value,
605 &num_handles_ptr)) {
606 return -1;
607 }
608 if (!ConvertScalarInput(nap, params[6], &flags_value)) {
609 return -1;
610 }
611 if (!ConvertScalarOutput(nap, params[7], false, &result_ptr)) {
612 return -1;
613 }
614 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
615 return -1;
616 }
617 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
618 true, &handles)) {
619 return -1;
620 }
621 }
622
623 result_value = MojoSystemImplReadMessage(
624 g_mojo_system, message_pipe_handle_value, bytes,
625 num_bytes_ptr ? &num_bytes_value : nullptr, handles,
626 num_handles_ptr ? &num_handles_value : nullptr, flags_value);
627
628 {
629 ScopedCopyLock copy_lock(nap);
630 if (num_bytes_ptr) {
631 *num_bytes_ptr = num_bytes_value;
632 }
633 if (num_handles_ptr) {
634 *num_handles_ptr = num_handles_value;
635 }
636 *result_ptr = result_value;
637 }
638
639 return 0;
640 }
641 case 18: {
642 if (num_params != 3) {
643 return -1;
644 }
645 MojoHandle volatile* handle_ptr;
646 MojoHandle handle_value;
647 MojoResult volatile* result_ptr;
648 MojoResult result_value;
649 {
650 ScopedCopyLock copy_lock(nap);
651 if (!ConvertScalarInOut(nap, params[1], false, &handle_value,
652 &handle_ptr)) {
653 return -1;
654 }
655 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
656 return -1;
657 }
658 }
659
660 result_value = _MojoGetInitialHandle(&handle_value);
661
662 {
663 ScopedCopyLock copy_lock(nap);
664 *handle_ptr = handle_value;
665 *result_ptr = result_value;
666 }
667
668 return 0;
669 }
670 } 706 }
671 707
672 return -1; 708 return -1;
673 } 709 }
674 710
675 ssize_t MojoDescRecvMsg(void* handle, 711 ssize_t MojoDescRecvMsg(void* handle,
676 struct NaClImcTypedMsgHdr* msg, 712 struct NaClImcTypedMsgHdr* msg,
677 int flags) { 713 int flags) {
678 return -1; 714 return -1;
679 } 715 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 MojoResult InjectMojo(struct NaClApp* nap, MojoHandle handle) { 757 MojoResult InjectMojo(struct NaClApp* nap, MojoHandle handle) {
722 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap)); 758 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap));
723 g_mojo_system = MojoSystemImplCreateImpl(); 759 g_mojo_system = MojoSystemImplCreateImpl();
724 return MojoSystemImplTransferHandle(MojoSystemImplGetDefaultImpl(), handle, 760 return MojoSystemImplTransferHandle(MojoSystemImplGetDefaultImpl(), handle,
725 g_mojo_system, &g_mojo_handle); 761 g_mojo_system, &g_mojo_handle);
726 } 762 }
727 763
728 void InjectDisabledMojo(struct NaClApp* nap) { 764 void InjectDisabledMojo(struct NaClApp* nap) {
729 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeDisabledMojoDesc(nap)); 765 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeDisabledMojoDesc(nap));
730 } 766 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698