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

Side by Side Diff: mojo/nacl/generator/NOT_FOR_COMMIT/mojo_syscall.cc

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

Powered by Google App Engine
This is Rietveld 408576698