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

Side by Side Diff: nacl_bindings/mojo_syscall.cc

Issue 1052723003: NaCl: create a separate namespace for Mojo handles. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 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
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 "nacl_bindings/mojo_syscall.h" 8 #include "nacl_bindings/mojo_syscall.h"
9 9
10 #include <stdio.h> 10 #include <stdio.h>
11 11
12 #include "mojo/public/c/system/core.h" 12 #include "mojo/public/c/system/core.h"
13 #include "mojo/public/platform/native/core_system_api.h"
13 #include "nacl_bindings/mojo_syscall_internal.h" 14 #include "nacl_bindings/mojo_syscall_internal.h"
14 #include "native_client/src/public/chrome_main.h" 15 #include "native_client/src/public/chrome_main.h"
15 #include "native_client/src/public/nacl_app.h" 16 #include "native_client/src/public/nacl_app.h"
16 #include "native_client/src/trusted/desc/nacl_desc_custom.h" 17 #include "native_client/src/trusted/desc/nacl_desc_custom.h"
17 18
18 MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID; 19 MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID;
20 MojoCoreHandle g_mojo_core = nullptr;
19 21
20 namespace { 22 namespace {
21 23
22 MojoResult _MojoGetInitialHandle(MojoHandle* handle) { 24 MojoResult _MojoGetInitialHandle(MojoHandle* handle) {
23 *handle = g_mojo_handle; 25 *handle = g_mojo_handle;
24 return MOJO_RESULT_OK; 26 return MOJO_RESULT_OK;
25 } 27 }
26 28
27 void MojoDescDestroy(void* handle) { 29 void MojoDescDestroy(void* handle) {
28 } 30 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 if (!ConvertScalarInOut(nap, params[3], false, 68 if (!ConvertScalarInOut(nap, params[3], false,
67 &shared_buffer_handle_value, 69 &shared_buffer_handle_value,
68 &shared_buffer_handle_ptr)) { 70 &shared_buffer_handle_ptr)) {
69 return -1; 71 return -1;
70 } 72 }
71 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 73 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
72 return -1; 74 return -1;
73 } 75 }
74 } 76 }
75 77
76 result_value = MojoCreateSharedBuffer(options, num_bytes_value, 78 result_value = MojoCoreCreateSharedBuffer(
77 &shared_buffer_handle_value); 79 g_mojo_core, options, num_bytes_value, &shared_buffer_handle_value);
78 80
79 { 81 {
80 ScopedCopyLock copy_lock(nap); 82 ScopedCopyLock copy_lock(nap);
81 *shared_buffer_handle_ptr = shared_buffer_handle_value; 83 *shared_buffer_handle_ptr = shared_buffer_handle_value;
82 *result_ptr = result_value; 84 *result_ptr = result_value;
83 } 85 }
84 86
85 return 0; 87 return 0;
86 } 88 }
87 case 1: { 89 case 1: {
(...skipping 16 matching lines...) Expand all
104 } 106 }
105 if (!ConvertScalarInOut(nap, params[3], false, &new_buffer_handle_value, 107 if (!ConvertScalarInOut(nap, params[3], false, &new_buffer_handle_value,
106 &new_buffer_handle_ptr)) { 108 &new_buffer_handle_ptr)) {
107 return -1; 109 return -1;
108 } 110 }
109 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 111 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
110 return -1; 112 return -1;
111 } 113 }
112 } 114 }
113 115
114 result_value = MojoDuplicateBufferHandle(buffer_handle_value, options, 116 result_value = MojoCoreDuplicateBufferHandle(
115 &new_buffer_handle_value); 117 g_mojo_core, buffer_handle_value, options, &new_buffer_handle_value);
116 118
117 { 119 {
118 ScopedCopyLock copy_lock(nap); 120 ScopedCopyLock copy_lock(nap);
119 *new_buffer_handle_ptr = new_buffer_handle_value; 121 *new_buffer_handle_ptr = new_buffer_handle_value;
120 *result_ptr = result_value; 122 *result_ptr = result_value;
121 } 123 }
122 124
123 return 0; 125 return 0;
124 } 126 }
125 case 2: 127 case 2:
(...skipping 26 matching lines...) Expand all
152 if (!ConvertScalarInOut(nap, params[3], false, 154 if (!ConvertScalarInOut(nap, params[3], false,
153 &data_pipe_consumer_handle_value, 155 &data_pipe_consumer_handle_value,
154 &data_pipe_consumer_handle_ptr)) { 156 &data_pipe_consumer_handle_ptr)) {
155 return -1; 157 return -1;
156 } 158 }
157 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 159 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
158 return -1; 160 return -1;
159 } 161 }
160 } 162 }
161 163
162 result_value = 164 result_value = MojoCoreCreateDataPipe(g_mojo_core, options,
163 MojoCreateDataPipe(options, &data_pipe_producer_handle_value, 165 &data_pipe_producer_handle_value,
164 &data_pipe_consumer_handle_value); 166 &data_pipe_consumer_handle_value);
165 167
166 { 168 {
167 ScopedCopyLock copy_lock(nap); 169 ScopedCopyLock copy_lock(nap);
168 *data_pipe_producer_handle_ptr = data_pipe_producer_handle_value; 170 *data_pipe_producer_handle_ptr = data_pipe_producer_handle_value;
169 *data_pipe_consumer_handle_ptr = data_pipe_consumer_handle_value; 171 *data_pipe_consumer_handle_ptr = data_pipe_consumer_handle_value;
170 *result_ptr = result_value; 172 *result_ptr = result_value;
171 } 173 }
172 174
173 return 0; 175 return 0;
174 } 176 }
(...skipping 23 matching lines...) Expand all
198 } 200 }
199 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 201 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
200 return -1; 202 return -1;
201 } 203 }
202 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false, 204 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false,
203 &elements)) { 205 &elements)) {
204 return -1; 206 return -1;
205 } 207 }
206 } 208 }
207 209
208 result_value = MojoWriteData(data_pipe_producer_handle_value, elements, 210 result_value =
209 &num_bytes_value, flags_value); 211 MojoCoreWriteData(g_mojo_core, data_pipe_producer_handle_value,
212 elements, &num_bytes_value, flags_value);
210 213
211 { 214 {
212 ScopedCopyLock copy_lock(nap); 215 ScopedCopyLock copy_lock(nap);
213 *num_bytes_ptr = num_bytes_value; 216 *num_bytes_ptr = num_bytes_value;
214 *result_ptr = result_value; 217 *result_ptr = result_value;
215 } 218 }
216 219
217 return 0; 220 return 0;
218 } 221 }
219 case 6: 222 case 6:
(...skipping 14 matching lines...) Expand all
234 return -1; 237 return -1;
235 } 238 }
236 if (!ConvertScalarInput(nap, params[2], &num_bytes_written_value)) { 239 if (!ConvertScalarInput(nap, params[2], &num_bytes_written_value)) {
237 return -1; 240 return -1;
238 } 241 }
239 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) { 242 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) {
240 return -1; 243 return -1;
241 } 244 }
242 } 245 }
243 246
244 result_value = MojoEndWriteData(data_pipe_producer_handle_value, 247 result_value =
245 num_bytes_written_value); 248 MojoCoreEndWriteData(g_mojo_core, data_pipe_producer_handle_value,
249 num_bytes_written_value);
246 250
247 { 251 {
248 ScopedCopyLock copy_lock(nap); 252 ScopedCopyLock copy_lock(nap);
249 *result_ptr = result_value; 253 *result_ptr = result_value;
250 } 254 }
251 255
252 return 0; 256 return 0;
253 } 257 }
254 case 8: { 258 case 8: {
255 if (num_params != 6) { 259 if (num_params != 6) {
(...skipping 21 matching lines...) Expand all
277 } 281 }
278 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 282 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
279 return -1; 283 return -1;
280 } 284 }
281 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false, 285 if (!ConvertArray(nap, params[2], num_bytes_value, 1, false,
282 &elements)) { 286 &elements)) {
283 return -1; 287 return -1;
284 } 288 }
285 } 289 }
286 290
287 result_value = MojoReadData(data_pipe_consumer_handle_value, elements, 291 result_value =
288 &num_bytes_value, flags_value); 292 MojoCoreReadData(g_mojo_core, data_pipe_consumer_handle_value,
293 elements, &num_bytes_value, flags_value);
289 294
290 { 295 {
291 ScopedCopyLock copy_lock(nap); 296 ScopedCopyLock copy_lock(nap);
292 *num_bytes_ptr = num_bytes_value; 297 *num_bytes_ptr = num_bytes_value;
293 *result_ptr = result_value; 298 *result_ptr = result_value;
294 } 299 }
295 300
296 return 0; 301 return 0;
297 } 302 }
298 case 9: 303 case 9:
(...skipping 14 matching lines...) Expand all
313 return -1; 318 return -1;
314 } 319 }
315 if (!ConvertScalarInput(nap, params[2], &num_bytes_read_value)) { 320 if (!ConvertScalarInput(nap, params[2], &num_bytes_read_value)) {
316 return -1; 321 return -1;
317 } 322 }
318 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) { 323 if (!ConvertScalarOutput(nap, params[3], false, &result_ptr)) {
319 return -1; 324 return -1;
320 } 325 }
321 } 326 }
322 327
323 result_value = MojoEndReadData(data_pipe_consumer_handle_value, 328 result_value = MojoCoreEndReadData(
324 num_bytes_read_value); 329 g_mojo_core, data_pipe_consumer_handle_value, num_bytes_read_value);
325 330
326 { 331 {
327 ScopedCopyLock copy_lock(nap); 332 ScopedCopyLock copy_lock(nap);
328 *result_ptr = result_value; 333 *result_ptr = result_value;
329 } 334 }
330 335
331 return 0; 336 return 0;
332 } 337 }
333 case 11: { 338 case 11: {
334 if (num_params != 2) { 339 if (num_params != 2) {
335 return -1; 340 return -1;
336 } 341 }
337 MojoTimeTicks volatile* result_ptr; 342 MojoTimeTicks volatile* result_ptr;
338 MojoTimeTicks result_value; 343 MojoTimeTicks result_value;
339 { 344 {
340 ScopedCopyLock copy_lock(nap); 345 ScopedCopyLock copy_lock(nap);
341 if (!ConvertScalarOutput(nap, params[1], false, &result_ptr)) { 346 if (!ConvertScalarOutput(nap, params[1], false, &result_ptr)) {
342 return -1; 347 return -1;
343 } 348 }
344 } 349 }
345 350
346 result_value = MojoGetTimeTicksNow(); 351 result_value = MojoCoreGetTimeTicksNow(g_mojo_core);
347 352
348 { 353 {
349 ScopedCopyLock copy_lock(nap); 354 ScopedCopyLock copy_lock(nap);
350 *result_ptr = result_value; 355 *result_ptr = result_value;
351 } 356 }
352 357
353 return 0; 358 return 0;
354 } 359 }
355 case 12: { 360 case 12: {
356 if (num_params != 3) { 361 if (num_params != 3) {
357 return -1; 362 return -1;
358 } 363 }
359 MojoHandle handle_value; 364 MojoHandle handle_value;
360 MojoResult volatile* result_ptr; 365 MojoResult volatile* result_ptr;
361 MojoResult result_value; 366 MojoResult result_value;
362 { 367 {
363 ScopedCopyLock copy_lock(nap); 368 ScopedCopyLock copy_lock(nap);
364 if (!ConvertScalarInput(nap, params[1], &handle_value)) { 369 if (!ConvertScalarInput(nap, params[1], &handle_value)) {
365 return -1; 370 return -1;
366 } 371 }
367 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) { 372 if (!ConvertScalarOutput(nap, params[2], false, &result_ptr)) {
368 return -1; 373 return -1;
369 } 374 }
370 } 375 }
371 376
372 result_value = MojoClose(handle_value); 377 result_value = MojoCoreClose(g_mojo_core, handle_value);
373 378
374 { 379 {
375 ScopedCopyLock copy_lock(nap); 380 ScopedCopyLock copy_lock(nap);
376 *result_ptr = result_value; 381 *result_ptr = result_value;
377 } 382 }
378 383
379 return 0; 384 return 0;
380 } 385 }
381 case 13: { 386 case 13: {
382 if (num_params != 6) { 387 if (num_params != 6) {
(...skipping 18 matching lines...) Expand all
401 return -1; 406 return -1;
402 } 407 }
403 if (!ConvertScalarOutput(nap, params[4], true, &signals_state_ptr)) { 408 if (!ConvertScalarOutput(nap, params[4], true, &signals_state_ptr)) {
404 return -1; 409 return -1;
405 } 410 }
406 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) { 411 if (!ConvertScalarOutput(nap, params[5], false, &result_ptr)) {
407 return -1; 412 return -1;
408 } 413 }
409 } 414 }
410 415
411 result_value = MojoWait(handle_value, signals_value, deadline_value, 416 result_value =
412 signals_state_ptr ? &signals_state_value : NULL); 417 MojoCoreWait(g_mojo_core, handle_value, signals_value, deadline_value,
418 signals_state_ptr ? &signals_state_value : NULL);
413 419
414 { 420 {
415 ScopedCopyLock copy_lock(nap); 421 ScopedCopyLock copy_lock(nap);
416 if (signals_state_ptr != NULL) { 422 if (signals_state_ptr != NULL) {
417 memcpy_volatile_out(signals_state_ptr, &signals_state_value, 423 memcpy_volatile_out(signals_state_ptr, &signals_state_value,
418 sizeof(MojoHandleSignalsState)); 424 sizeof(MojoHandleSignalsState));
419 } 425 }
420 *result_ptr = result_value; 426 *result_ptr = result_value;
421 } 427 }
422 428
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 if (!ConvertArray(nap, params[2], num_handles_value, sizeof(*signals), 463 if (!ConvertArray(nap, params[2], num_handles_value, sizeof(*signals),
458 false, &signals)) { 464 false, &signals)) {
459 return -1; 465 return -1;
460 } 466 }
461 if (!ConvertArray(nap, params[6], num_handles_value, 467 if (!ConvertArray(nap, params[6], num_handles_value,
462 sizeof(*signals_states), true, &signals_states)) { 468 sizeof(*signals_states), true, &signals_states)) {
463 return -1; 469 return -1;
464 } 470 }
465 } 471 }
466 472
467 result_value = MojoWaitMany( 473 result_value = MojoCoreWaitMany(
468 handles, signals, num_handles_value, deadline_value, 474 g_mojo_core, handles, signals, num_handles_value, deadline_value,
469 result_index_ptr ? &result_index_value : NULL, signals_states); 475 result_index_ptr ? &result_index_value : NULL, signals_states);
470 476
471 { 477 {
472 ScopedCopyLock copy_lock(nap); 478 ScopedCopyLock copy_lock(nap);
473 if (result_index_ptr != NULL) { 479 if (result_index_ptr != NULL) {
474 *result_index_ptr = result_index_value; 480 *result_index_ptr = result_index_value;
475 } 481 }
476 *result_ptr = result_value; 482 *result_ptr = result_value;
477 } 483 }
478 484
(...skipping 23 matching lines...) Expand all
502 if (!ConvertScalarInOut(nap, params[3], false, 508 if (!ConvertScalarInOut(nap, params[3], false,
503 &message_pipe_handle1_value, 509 &message_pipe_handle1_value,
504 &message_pipe_handle1_ptr)) { 510 &message_pipe_handle1_ptr)) {
505 return -1; 511 return -1;
506 } 512 }
507 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) { 513 if (!ConvertScalarOutput(nap, params[4], false, &result_ptr)) {
508 return -1; 514 return -1;
509 } 515 }
510 } 516 }
511 517
512 result_value = MojoCreateMessagePipe(options, &message_pipe_handle0_value, 518 result_value = MojoCoreCreateMessagePipe(g_mojo_core, options,
513 &message_pipe_handle1_value); 519 &message_pipe_handle0_value,
520 &message_pipe_handle1_value);
514 521
515 { 522 {
516 ScopedCopyLock copy_lock(nap); 523 ScopedCopyLock copy_lock(nap);
517 *message_pipe_handle0_ptr = message_pipe_handle0_value; 524 *message_pipe_handle0_ptr = message_pipe_handle0_value;
518 *message_pipe_handle1_ptr = message_pipe_handle1_value; 525 *message_pipe_handle1_ptr = message_pipe_handle1_value;
519 *result_ptr = result_value; 526 *result_ptr = result_value;
520 } 527 }
521 528
522 return 0; 529 return 0;
523 } 530 }
(...skipping 28 matching lines...) Expand all
552 } 559 }
553 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) { 560 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
554 return -1; 561 return -1;
555 } 562 }
556 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles), 563 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
557 true, &handles)) { 564 true, &handles)) {
558 return -1; 565 return -1;
559 } 566 }
560 } 567 }
561 568
562 result_value = 569 result_value = MojoCoreWriteMessage(
563 MojoWriteMessage(message_pipe_handle_value, bytes, num_bytes_value, 570 g_mojo_core, message_pipe_handle_value, bytes, num_bytes_value,
564 handles, num_handles_value, flags_value); 571 handles, num_handles_value, flags_value);
565 572
566 { 573 {
567 ScopedCopyLock copy_lock(nap); 574 ScopedCopyLock copy_lock(nap);
568 *result_ptr = result_value; 575 *result_ptr = result_value;
569 } 576 }
570 577
571 return 0; 578 return 0;
572 } 579 }
573 case 17: { 580 case 17: {
574 if (num_params != 8) { 581 if (num_params != 8) {
(...skipping 30 matching lines...) Expand all
605 } 612 }
606 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) { 613 if (!ConvertArray(nap, params[2], num_bytes_value, 1, true, &bytes)) {
607 return -1; 614 return -1;
608 } 615 }
609 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles), 616 if (!ConvertArray(nap, params[4], num_handles_value, sizeof(*handles),
610 true, &handles)) { 617 true, &handles)) {
611 return -1; 618 return -1;
612 } 619 }
613 } 620 }
614 621
615 result_value = MojoReadMessage( 622 result_value = MojoCoreReadMessage(
616 message_pipe_handle_value, bytes, 623 g_mojo_core, message_pipe_handle_value, bytes,
617 num_bytes_ptr ? &num_bytes_value : NULL, handles, 624 num_bytes_ptr ? &num_bytes_value : NULL, handles,
618 num_handles_ptr ? &num_handles_value : NULL, flags_value); 625 num_handles_ptr ? &num_handles_value : NULL, flags_value);
619 626
620 { 627 {
621 ScopedCopyLock copy_lock(nap); 628 ScopedCopyLock copy_lock(nap);
622 if (num_bytes_ptr != NULL) { 629 if (num_bytes_ptr != NULL) {
623 *num_bytes_ptr = num_bytes_value; 630 *num_bytes_ptr = num_bytes_value;
624 } 631 }
625 if (num_handles_ptr != NULL) { 632 if (num_handles_ptr != NULL) {
626 *num_handles_ptr = num_handles_value; 633 *num_handles_ptr = num_handles_value;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 return NaClDescMakeCustomDesc(nap, &funcs); 710 return NaClDescMakeCustomDesc(nap, &funcs);
704 } 711 }
705 712
706 } // namespace 713 } // namespace
707 714
708 // The value for this FD must not conflict with uses inside Chromium. However, 715 // The value for this FD must not conflict with uses inside Chromium. However,
709 // mojo/nacl doesn't depend on any Chromium headers, so we can't use a #define 716 // mojo/nacl doesn't depend on any Chromium headers, so we can't use a #define
710 // from there. 717 // from there.
711 #define NACL_MOJO_DESC (NACL_CHROME_DESC_BASE + 3) 718 #define NACL_MOJO_DESC (NACL_CHROME_DESC_BASE + 3)
712 719
713 void InjectMojo(struct NaClApp* nap) {
714 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap));
715 g_mojo_handle = MOJO_HANDLE_INVALID;
716 }
717
718 void InjectMojo(struct NaClApp* nap, MojoHandle handle) { 720 void InjectMojo(struct NaClApp* nap, MojoHandle handle) {
719 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap)); 721 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeMojoDesc(nap));
720 g_mojo_handle = handle; 722 g_mojo_core = MojoCoreCreateCore();
723 // TODO handle errors?
724 MojoCoreTransferHandle(MojoCoreGetDefaultCore(), handle, g_mojo_core,
725 &g_mojo_handle);
721 } 726 }
722 727
723 void InjectDisabledMojo(struct NaClApp* nap) { 728 void InjectDisabledMojo(struct NaClApp* nap) {
724 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeDisabledMojoDesc(nap)); 729 NaClAppSetDesc(nap, NACL_MOJO_DESC, MakeDisabledMojoDesc(nap));
725 } 730 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698