OLD | NEW |
---|---|
(Empty) | |
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. | |
4 | |
5 // WARNING this file was generated by generate_monacl_bindings.py | |
6 // Do not edit by hand. | |
7 | |
8 #include "mojo/monacl/mojo_syscall.h" | |
9 | |
10 #include <stdio.h> | |
11 | |
12 #include "mojo/monacl/mojo_syscall_internal.h" | |
Mark Seaborn
2014/09/09 19:13:11
This header seems to be missing from your changese
Nick Bray (chromium)
2014/09/09 23:12:32
Done.
| |
13 #include "mojo/public/c/system/core.h" | |
14 #include "native_client/src/public/chrome_main.h" | |
15 #include "native_client/src/public/nacl_app.h" | |
16 #include "native_client/src/trusted/desc/nacl_desc_custom.h" | |
17 | |
18 namespace { | |
19 | |
20 void MojoDescDestroy(void* handle) { | |
21 UNREFERENCED_PARAMETER(handle); | |
22 } | |
23 | |
24 ssize_t MojoDescSendMsg(void* handle, | |
25 const struct NaClImcTypedMsgHdr* msg, | |
26 int flags) { | |
27 UNREFERENCED_PARAMETER(flags); | |
28 | |
29 struct NaClApp* nap = static_cast<struct NaClApp*>(handle); | |
30 | |
31 if (msg->iov_length != 1 || msg->iov[0].length < 8 || msg->ndesc_length != 0) { | |
32 return -1; | |
33 } | |
34 | |
35 uint32_t* params = static_cast<uint32_t*>(msg->iov[0].base); | |
36 uint32_t numParams = msg->iov[0].length / sizeof(*params); | |
37 | |
38 uint32_t msgType = params[0]; | |
39 switch (msgType) { | |
40 case 0: | |
41 { | |
42 if (numParams != 5) { | |
43 return -1; | |
44 } | |
45 const struct MojoCreateSharedBufferOptions* options; | |
46 uint64_t num_bytes_value; | |
47 MojoHandle volatile* shared_buffer_handle_ptr; | |
48 MojoHandle shared_buffer_handle_value; | |
49 MojoResult volatile* result_ptr; | |
50 MojoResult result_value; | |
51 { | |
52 ScopedCopyLock copy_lock(nap); | |
53 if (!ConvertStruct(nap, params[1], true, &options)) { | |
54 return -1; | |
55 } | |
56 if (!ConvertScalarInput(nap, params[2], &num_bytes_value)) { | |
57 return -1; | |
58 } | |
59 if (!ConvertScalarOutput(nap, params[3], &shared_buffer_handle_ptr)) { | |
60 return -1; | |
61 } | |
62 if (!ConvertScalarOutput(nap, params[4], &result_ptr)) { | |
63 return -1; | |
64 } | |
65 } | |
66 | |
67 result_value = MojoCreateSharedBuffer(options, num_bytes_value, &shared_bu ffer_handle_value); | |
68 | |
69 { | |
70 ScopedCopyLock copy_lock(nap); | |
71 *shared_buffer_handle_ptr = shared_buffer_handle_value; | |
72 *result_ptr = result_value; | |
73 } | |
74 | |
75 return 0; | |
76 } | |
77 case 1: | |
78 { | |
79 if (numParams != 5) { | |
80 return -1; | |
81 } | |
82 MojoHandle buffer_handle_value; | |
83 const struct MojoDuplicateBufferHandleOptions* options; | |
84 MojoHandle volatile* new_buffer_handle_ptr; | |
85 MojoHandle new_buffer_handle_value; | |
86 MojoResult volatile* result_ptr; | |
87 MojoResult result_value; | |
88 { | |
89 ScopedCopyLock copy_lock(nap); | |
90 if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) { | |
91 return -1; | |
92 } | |
93 if (!ConvertStruct(nap, params[2], true, &options)) { | |
94 return -1; | |
95 } | |
96 if (!ConvertScalarOutput(nap, params[3], &new_buffer_handle_ptr)) { | |
97 return -1; | |
98 } | |
99 if (!ConvertScalarOutput(nap, params[4], &result_ptr)) { | |
100 return -1; | |
101 } | |
102 } | |
103 | |
104 result_value = MojoDuplicateBufferHandle(buffer_handle_value, options, &ne w_buffer_handle_value); | |
105 | |
106 { | |
107 ScopedCopyLock copy_lock(nap); | |
108 *new_buffer_handle_ptr = new_buffer_handle_value; | |
109 *result_ptr = result_value; | |
110 } | |
111 | |
112 return 0; | |
113 } | |
114 case 2: | |
115 { | |
116 if (numParams != 7) { | |
117 return -1; | |
118 } | |
119 MojoHandle buffer_handle_value; | |
120 uint64_t offset_value; | |
121 uint64_t num_bytes_value; | |
122 void* volatile* buffer_ptr; | |
123 void* buffer_value; | |
124 MojoMapBufferFlags flags_value; | |
125 MojoResult volatile* result_ptr; | |
126 MojoResult result_value; | |
127 { | |
128 ScopedCopyLock copy_lock(nap); | |
129 if (!ConvertScalarInput(nap, params[1], &buffer_handle_value)) { | |
130 return -1; | |
131 } | |
132 if (!ConvertScalarInput(nap, params[2], &offset_value)) { | |
133 return -1; | |
134 } | |
135 if (!ConvertScalarInput(nap, params[3], &num_bytes_value)) { | |
136 return -1; | |
137 } | |
138 if (!ConvertScalarOutput(nap, params[4], &buffer_ptr)) { | |
139 return -1; | |
140 } | |
141 if (!ConvertScalarInput(nap, params[5], &flags_value)) { | |
142 return -1; | |
143 } | |
144 if (!ConvertScalarOutput(nap, params[6], &result_ptr)) { | |
145 return -1; | |
146 } | |
147 } | |
148 | |
149 result_value = MojoMapBuffer(buffer_handle_value, offset_value, num_bytes_ value, &buffer_value, flags_value); | |
150 | |
151 { | |
152 ScopedCopyLock copy_lock(nap); | |
153 *buffer_ptr = buffer_value; | |
154 *result_ptr = result_value; | |
155 } | |
156 | |
157 return 0; | |
158 } | |
159 case 3: | |
160 { | |
161 if (numParams != 3) { | |
162 return -1; | |
163 } | |
164 void* buffer_value; | |
165 MojoResult volatile* result_ptr; | |
166 MojoResult result_value; | |
167 { | |
168 ScopedCopyLock copy_lock(nap); | |
169 if (!ConvertScalarInput(nap, params[1], &buffer_value)) { | |
170 return -1; | |
171 } | |
172 if (!ConvertScalarOutput(nap, params[2], &result_ptr)) { | |
173 return -1; | |
174 } | |
175 } | |
176 | |
177 result_value = MojoUnmapBuffer(buffer_value); | |
178 | |
179 { | |
180 ScopedCopyLock copy_lock(nap); | |
181 *result_ptr = result_value; | |
182 } | |
183 | |
184 return 0; | |
185 } | |
186 case 4: | |
187 { | |
188 if (numParams != 5) { | |
189 return -1; | |
190 } | |
191 const struct MojoCreateDataPipeOptions* options; | |
192 MojoHandle volatile* data_pipe_producer_handle_ptr; | |
193 MojoHandle data_pipe_producer_handle_value; | |
194 MojoHandle volatile* data_pipe_consumer_handle_ptr; | |
195 MojoHandle data_pipe_consumer_handle_value; | |
196 MojoResult volatile* result_ptr; | |
197 MojoResult result_value; | |
198 { | |
199 ScopedCopyLock copy_lock(nap); | |
200 if (!ConvertStruct(nap, params[1], true, &options)) { | |
201 return -1; | |
202 } | |
203 if (!ConvertScalarOutput(nap, params[2], &data_pipe_producer_handle_ptr) ) { | |
204 return -1; | |
205 } | |
206 if (!ConvertScalarOutput(nap, params[3], &data_pipe_consumer_handle_ptr) ) { | |
207 return -1; | |
208 } | |
209 if (!ConvertScalarOutput(nap, params[4], &result_ptr)) { | |
210 return -1; | |
211 } | |
212 } | |
213 | |
214 result_value = MojoCreateDataPipe(options, &data_pipe_producer_handle_valu e, &data_pipe_consumer_handle_value); | |
215 | |
216 { | |
217 ScopedCopyLock copy_lock(nap); | |
218 *data_pipe_producer_handle_ptr = data_pipe_producer_handle_value; | |
219 *data_pipe_consumer_handle_ptr = data_pipe_consumer_handle_value; | |
220 *result_ptr = result_value; | |
221 } | |
222 | |
223 return 0; | |
224 } | |
225 case 5: | |
226 { | |
227 if (numParams != 6) { | |
228 return -1; | |
229 } | |
230 MojoHandle data_pipe_producer_handle_value; | |
231 const void* elements; | |
232 uint32_t volatile* num_bytes_ptr; | |
233 uint32_t num_bytes_value; | |
234 MojoWriteDataFlags flags_value; | |
235 MojoResult volatile* result_ptr; | |
236 MojoResult result_value; | |
237 { | |
238 ScopedCopyLock copy_lock(nap); | |
239 if (!ConvertScalarInput(nap, params[1], &data_pipe_producer_handle_value )) { | |
240 return -1; | |
241 } | |
242 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value, &num_by tes_ptr)) { | |
243 return -1; | |
244 } | |
245 if (!ConvertScalarInput(nap, params[4], &flags_value)) { | |
246 return -1; | |
247 } | |
248 if (!ConvertScalarOutput(nap, params[5], &result_ptr)) { | |
249 return -1; | |
250 } | |
251 if (!ConvertBytes(nap, params[2], num_bytes_value, false, &elements)) { | |
252 return -1; | |
253 } | |
254 } | |
255 | |
256 result_value = MojoWriteData(data_pipe_producer_handle_value, elements, &n um_bytes_value, flags_value); | |
257 | |
258 { | |
259 ScopedCopyLock copy_lock(nap); | |
260 *num_bytes_ptr = num_bytes_value; | |
261 *result_ptr = result_value; | |
262 } | |
263 | |
264 return 0; | |
265 } | |
266 case 6: | |
267 { | |
268 if (numParams != 6) { | |
269 return -1; | |
270 } | |
271 MojoHandle data_pipe_producer_handle_value; | |
272 void* volatile* buffer_ptr; | |
273 void* buffer_value; | |
274 uint32_t volatile* buffer_num_bytes_ptr; | |
275 uint32_t buffer_num_bytes_value; | |
276 MojoWriteDataFlags flags_value; | |
277 MojoResult volatile* result_ptr; | |
278 MojoResult result_value; | |
279 { | |
280 ScopedCopyLock copy_lock(nap); | |
281 if (!ConvertScalarInput(nap, params[1], &data_pipe_producer_handle_value )) { | |
282 return -1; | |
283 } | |
284 if (!ConvertScalarOutput(nap, params[2], &buffer_ptr)) { | |
285 return -1; | |
286 } | |
287 if (!ConvertScalarInOut(nap, params[3], false, &buffer_num_bytes_value, &buffer_num_bytes_ptr)) { | |
288 return -1; | |
289 } | |
290 if (!ConvertScalarInput(nap, params[4], &flags_value)) { | |
291 return -1; | |
292 } | |
293 if (!ConvertScalarOutput(nap, params[5], &result_ptr)) { | |
294 return -1; | |
295 } | |
296 } | |
297 | |
298 result_value = MojoBeginWriteData(data_pipe_producer_handle_value, &buffer _value, &buffer_num_bytes_value, flags_value); | |
299 | |
300 { | |
301 ScopedCopyLock copy_lock(nap); | |
302 *buffer_ptr = buffer_value; | |
303 *buffer_num_bytes_ptr = buffer_num_bytes_value; | |
304 *result_ptr = result_value; | |
305 } | |
306 | |
307 return 0; | |
308 } | |
309 case 7: | |
310 { | |
311 if (numParams != 4) { | |
312 return -1; | |
313 } | |
314 MojoHandle data_pipe_producer_handle_value; | |
315 uint32_t num_bytes_written_value; | |
316 MojoResult volatile* result_ptr; | |
317 MojoResult result_value; | |
318 { | |
319 ScopedCopyLock copy_lock(nap); | |
320 if (!ConvertScalarInput(nap, params[1], &data_pipe_producer_handle_value )) { | |
321 return -1; | |
322 } | |
323 if (!ConvertScalarInput(nap, params[2], &num_bytes_written_value)) { | |
324 return -1; | |
325 } | |
326 if (!ConvertScalarOutput(nap, params[3], &result_ptr)) { | |
327 return -1; | |
328 } | |
329 } | |
330 | |
331 result_value = MojoEndWriteData(data_pipe_producer_handle_value, num_bytes _written_value); | |
332 | |
333 { | |
334 ScopedCopyLock copy_lock(nap); | |
335 *result_ptr = result_value; | |
336 } | |
337 | |
338 return 0; | |
339 } | |
340 case 8: | |
341 { | |
342 if (numParams != 6) { | |
343 return -1; | |
344 } | |
345 MojoHandle data_pipe_consumer_handle_value; | |
346 void* elements; | |
347 uint32_t volatile* num_bytes_ptr; | |
348 uint32_t num_bytes_value; | |
349 MojoReadDataFlags flags_value; | |
350 MojoResult volatile* result_ptr; | |
351 MojoResult result_value; | |
352 { | |
353 ScopedCopyLock copy_lock(nap); | |
354 if (!ConvertScalarInput(nap, params[1], &data_pipe_consumer_handle_value )) { | |
355 return -1; | |
356 } | |
357 if (!ConvertScalarInOut(nap, params[3], false, &num_bytes_value, &num_by tes_ptr)) { | |
358 return -1; | |
359 } | |
360 if (!ConvertScalarInput(nap, params[4], &flags_value)) { | |
361 return -1; | |
362 } | |
363 if (!ConvertScalarOutput(nap, params[5], &result_ptr)) { | |
364 return -1; | |
365 } | |
366 if (!ConvertBytes(nap, params[2], num_bytes_value, false, &elements)) { | |
367 return -1; | |
368 } | |
369 } | |
370 | |
371 result_value = MojoReadData(data_pipe_consumer_handle_value, elements, &nu m_bytes_value, flags_value); | |
372 | |
373 { | |
374 ScopedCopyLock copy_lock(nap); | |
375 *num_bytes_ptr = num_bytes_value; | |
376 *result_ptr = result_value; | |
377 } | |
378 | |
379 return 0; | |
380 } | |
381 case 9: | |
382 { | |
383 if (numParams != 6) { | |
384 return -1; | |
385 } | |
386 MojoHandle data_pipe_consumer_handle_value; | |
387 const void* volatile* buffer_ptr; | |
388 const void* buffer_value; | |
389 uint32_t volatile* buffer_num_bytes_ptr; | |
390 uint32_t buffer_num_bytes_value; | |
391 MojoReadDataFlags flags_value; | |
392 MojoResult volatile* result_ptr; | |
393 MojoResult result_value; | |
394 { | |
395 ScopedCopyLock copy_lock(nap); | |
396 if (!ConvertScalarInput(nap, params[1], &data_pipe_consumer_handle_value )) { | |
397 return -1; | |
398 } | |
399 if (!ConvertScalarOutput(nap, params[2], &buffer_ptr)) { | |
400 return -1; | |
401 } | |
402 if (!ConvertScalarInOut(nap, params[3], false, &buffer_num_bytes_value, &buffer_num_bytes_ptr)) { | |
403 return -1; | |
404 } | |
405 if (!ConvertScalarInput(nap, params[4], &flags_value)) { | |
406 return -1; | |
407 } | |
408 if (!ConvertScalarOutput(nap, params[5], &result_ptr)) { | |
409 return -1; | |
410 } | |
411 } | |
412 | |
413 result_value = MojoBeginReadData(data_pipe_consumer_handle_value, &buffer_ value, &buffer_num_bytes_value, flags_value); | |
414 | |
415 { | |
416 ScopedCopyLock copy_lock(nap); | |
417 *buffer_ptr = buffer_value; | |
418 *buffer_num_bytes_ptr = buffer_num_bytes_value; | |
419 *result_ptr = result_value; | |
420 } | |
421 | |
422 return 0; | |
423 } | |
424 case 10: | |
425 { | |
426 if (numParams != 4) { | |
427 return -1; | |
428 } | |
429 MojoHandle data_pipe_consumer_handle_value; | |
430 uint32_t num_bytes_read_value; | |
431 MojoResult volatile* result_ptr; | |
432 MojoResult result_value; | |
433 { | |
434 ScopedCopyLock copy_lock(nap); | |
435 if (!ConvertScalarInput(nap, params[1], &data_pipe_consumer_handle_value )) { | |
436 return -1; | |
437 } | |
438 if (!ConvertScalarInput(nap, params[2], &num_bytes_read_value)) { | |
439 return -1; | |
440 } | |
441 if (!ConvertScalarOutput(nap, params[3], &result_ptr)) { | |
442 return -1; | |
443 } | |
444 } | |
445 | |
446 result_value = MojoEndReadData(data_pipe_consumer_handle_value, num_bytes_ read_value); | |
447 | |
448 { | |
449 ScopedCopyLock copy_lock(nap); | |
450 *result_ptr = result_value; | |
451 } | |
452 | |
453 return 0; | |
454 } | |
455 case 11: | |
456 { | |
457 if (numParams != 2) { | |
458 return -1; | |
459 } | |
460 MojoTimeTicks volatile* result_ptr; | |
461 MojoTimeTicks result_value; | |
462 { | |
463 ScopedCopyLock copy_lock(nap); | |
464 if (!ConvertScalarOutput(nap, params[1], &result_ptr)) { | |
465 return -1; | |
466 } | |
467 } | |
468 | |
469 result_value = MojoGetTimeTicksNow(); | |
470 | |
471 { | |
472 ScopedCopyLock copy_lock(nap); | |
473 *result_ptr = result_value; | |
474 } | |
475 | |
476 return 0; | |
477 } | |
478 case 12: | |
479 { | |
480 if (numParams != 3) { | |
481 return -1; | |
482 } | |
483 MojoHandle handle_value; | |
484 MojoResult volatile* result_ptr; | |
485 MojoResult result_value; | |
486 { | |
487 ScopedCopyLock copy_lock(nap); | |
488 if (!ConvertScalarInput(nap, params[1], &handle_value)) { | |
489 return -1; | |
490 } | |
491 if (!ConvertScalarOutput(nap, params[2], &result_ptr)) { | |
492 return -1; | |
493 } | |
494 } | |
495 | |
496 result_value = MojoClose(handle_value); | |
497 | |
498 { | |
499 ScopedCopyLock copy_lock(nap); | |
500 *result_ptr = result_value; | |
501 } | |
502 | |
503 return 0; | |
504 } | |
505 case 13: | |
506 { | |
507 if (numParams != 5) { | |
508 return -1; | |
509 } | |
510 MojoHandle handle_value; | |
511 MojoHandleSignals signals_value; | |
512 MojoDeadline deadline_value; | |
513 MojoResult volatile* result_ptr; | |
514 MojoResult result_value; | |
515 { | |
516 ScopedCopyLock copy_lock(nap); | |
517 if (!ConvertScalarInput(nap, params[1], &handle_value)) { | |
518 return -1; | |
519 } | |
520 if (!ConvertScalarInput(nap, params[2], &signals_value)) { | |
521 return -1; | |
522 } | |
523 if (!ConvertScalarInput(nap, params[3], &deadline_value)) { | |
524 return -1; | |
525 } | |
526 if (!ConvertScalarOutput(nap, params[4], &result_ptr)) { | |
527 return -1; | |
528 } | |
529 } | |
530 | |
531 result_value = MojoWait(handle_value, signals_value, deadline_value); | |
532 | |
533 { | |
534 ScopedCopyLock copy_lock(nap); | |
535 *result_ptr = result_value; | |
536 } | |
537 | |
538 return 0; | |
539 } | |
540 case 14: | |
541 { | |
542 if (numParams != 6) { | |
543 return -1; | |
544 } | |
545 const MojoHandle* handles; | |
546 const MojoHandleSignals* signals; | |
547 uint32_t num_handles_value; | |
548 MojoDeadline deadline_value; | |
549 MojoResult volatile* result_ptr; | |
550 MojoResult result_value; | |
551 { | |
552 ScopedCopyLock copy_lock(nap); | |
553 if (!ConvertScalarInput(nap, params[3], &num_handles_value)) { | |
554 return -1; | |
555 } | |
556 if (!ConvertScalarInput(nap, params[4], &deadline_value)) { | |
557 return -1; | |
558 } | |
559 if (!ConvertScalarOutput(nap, params[5], &result_ptr)) { | |
560 return -1; | |
561 } | |
562 if (!ConvertArray(nap, params[1], num_handles_value, false, &handles)) { | |
563 return -1; | |
564 } | |
565 if (!ConvertArray(nap, params[2], num_handles_value, false, &signals)) { | |
566 return -1; | |
567 } | |
568 } | |
569 | |
570 result_value = MojoWaitMany(handles, signals, num_handles_value, deadline_ value); | |
571 | |
572 { | |
573 ScopedCopyLock copy_lock(nap); | |
574 *result_ptr = result_value; | |
575 } | |
576 | |
577 return 0; | |
578 } | |
579 case 15: | |
580 { | |
581 if (numParams != 5) { | |
582 return -1; | |
583 } | |
584 const struct MojoCreateMessagePipeOptions* options; | |
585 MojoHandle volatile* message_pipe_handle0_ptr; | |
586 MojoHandle message_pipe_handle0_value; | |
587 MojoHandle volatile* message_pipe_handle1_ptr; | |
588 MojoHandle message_pipe_handle1_value; | |
589 MojoResult volatile* result_ptr; | |
590 MojoResult result_value; | |
591 { | |
592 ScopedCopyLock copy_lock(nap); | |
593 if (!ConvertStruct(nap, params[1], true, &options)) { | |
594 return -1; | |
595 } | |
596 if (!ConvertScalarOutput(nap, params[2], &message_pipe_handle0_ptr)) { | |
597 return -1; | |
598 } | |
599 if (!ConvertScalarOutput(nap, params[3], &message_pipe_handle1_ptr)) { | |
600 return -1; | |
601 } | |
602 if (!ConvertScalarOutput(nap, params[4], &result_ptr)) { | |
603 return -1; | |
604 } | |
605 } | |
606 | |
607 result_value = MojoCreateMessagePipe(options, &message_pipe_handle0_value, &message_pipe_handle1_value); | |
608 | |
609 { | |
610 ScopedCopyLock copy_lock(nap); | |
611 *message_pipe_handle0_ptr = message_pipe_handle0_value; | |
612 *message_pipe_handle1_ptr = message_pipe_handle1_value; | |
613 *result_ptr = result_value; | |
614 } | |
615 | |
616 return 0; | |
617 } | |
618 case 16: | |
619 { | |
620 if (numParams != 8) { | |
621 return -1; | |
622 } | |
623 MojoHandle message_pipe_handle_value; | |
624 const void* bytes; | |
625 uint32_t num_bytes_value; | |
626 const MojoHandle* handles; | |
627 uint32_t num_handles_value; | |
628 MojoWriteMessageFlags flags_value; | |
629 MojoResult volatile* result_ptr; | |
630 MojoResult result_value; | |
631 { | |
632 ScopedCopyLock copy_lock(nap); | |
633 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) { | |
634 return -1; | |
635 } | |
636 if (!ConvertScalarInput(nap, params[3], &num_bytes_value)) { | |
637 return -1; | |
638 } | |
639 if (!ConvertScalarInput(nap, params[5], &num_handles_value)) { | |
640 return -1; | |
641 } | |
642 if (!ConvertScalarInput(nap, params[6], &flags_value)) { | |
643 return -1; | |
644 } | |
645 if (!ConvertScalarOutput(nap, params[7], &result_ptr)) { | |
646 return -1; | |
647 } | |
648 if (!ConvertBytes(nap, params[2], num_bytes_value, true, &bytes)) { | |
649 return -1; | |
650 } | |
651 if (!ConvertArray(nap, params[4], num_handles_value, true, &handles)) { | |
652 return -1; | |
653 } | |
654 } | |
655 | |
656 result_value = MojoWriteMessage(message_pipe_handle_value, bytes, num_byte s_value, handles, num_handles_value, flags_value); | |
657 | |
658 { | |
659 ScopedCopyLock copy_lock(nap); | |
660 *result_ptr = result_value; | |
661 } | |
662 | |
663 return 0; | |
664 } | |
665 case 17: | |
666 { | |
667 if (numParams != 8) { | |
668 return -1; | |
669 } | |
670 MojoHandle message_pipe_handle_value; | |
671 void* bytes; | |
672 uint32_t volatile* num_bytes_ptr; | |
673 uint32_t num_bytes_value; | |
674 MojoHandle* handles; | |
675 uint32_t volatile* num_handles_ptr; | |
676 uint32_t num_handles_value; | |
677 MojoReadMessageFlags flags_value; | |
678 MojoResult volatile* result_ptr; | |
679 MojoResult result_value; | |
680 { | |
681 ScopedCopyLock copy_lock(nap); | |
682 if (!ConvertScalarInput(nap, params[1], &message_pipe_handle_value)) { | |
683 return -1; | |
684 } | |
685 if (!ConvertScalarInOut(nap, params[3], true, &num_bytes_value, &num_byt es_ptr)) { | |
686 return -1; | |
687 } | |
688 if (!ConvertScalarInOut(nap, params[5], true, &num_handles_value, &num_h andles_ptr)) { | |
689 return -1; | |
690 } | |
691 if (!ConvertScalarInput(nap, params[6], &flags_value)) { | |
692 return -1; | |
693 } | |
694 if (!ConvertScalarOutput(nap, params[7], &result_ptr)) { | |
695 return -1; | |
696 } | |
697 if (!ConvertBytes(nap, params[2], num_bytes_value, true, &bytes)) { | |
698 return -1; | |
699 } | |
700 if (!ConvertArray(nap, params[4], num_handles_value, true, &handles)) { | |
701 return -1; | |
702 } | |
703 } | |
704 | |
705 result_value = MojoReadMessage(message_pipe_handle_value, bytes, num_bytes _ptr ? &num_bytes_value : NULL, handles, num_handles_ptr ? &num_handles_value : NULL, flags_value); | |
706 | |
707 { | |
708 ScopedCopyLock copy_lock(nap); | |
709 if (num_bytes_ptr != NULL) { | |
710 *num_bytes_ptr = num_bytes_value; | |
711 } | |
712 if (num_handles_ptr != NULL) { | |
713 *num_handles_ptr = num_handles_value; | |
714 } | |
715 *result_ptr = result_value; | |
716 } | |
717 | |
718 return 0; | |
719 } | |
720 | |
721 default: | |
722 return -1; | |
723 } | |
724 | |
725 return -1; | |
726 } | |
727 | |
728 ssize_t MojoDescRecvMsg(void* handle, | |
729 struct NaClImcTypedMsgHdr* msg, | |
730 int flags) { | |
731 UNREFERENCED_PARAMETER(handle); | |
732 UNREFERENCED_PARAMETER(msg); | |
733 UNREFERENCED_PARAMETER(flags); | |
734 | |
735 return -1; | |
736 } | |
737 | |
738 struct NaClDesc* MakeMojoDesc(struct NaClApp* nap) { | |
739 struct NaClDescCustomFuncs funcs = NACL_DESC_CUSTOM_FUNCS_INITIALIZER; | |
740 funcs.Destroy = MojoDescDestroy; | |
741 funcs.SendMsg = MojoDescSendMsg; | |
742 funcs.RecvMsg = MojoDescRecvMsg; | |
743 return NaClDescMakeCustomDesc(nap, &funcs); | |
744 } | |
745 | |
746 } // namespace | |
747 | |
748 #define NACL_MOJO_DESC (NACL_CHROME_DESC_BASE + 2) | |
749 | |
750 void InjectMojo(struct NaClApp* nap) { | |
751 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap)); | |
752 } | |
OLD | NEW |