| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | {{generator_warning}} | 
 |  | 
 | #include "mojo/public/c/system/core.h" | 
 | #include "{{platform_dir}}/mojo_irt.h" | 
 | #include "native_client/src/public/chrome_main.h" | 
 | #include "native_client/src/public/imc_syscalls.h" | 
 | #include "native_client/src/public/imc_types.h" | 
 | #include "native_client/src/untrusted/irt/irt.h" | 
 |  | 
 | // The value for this FD must not conflict with uses inside Chromium. However, | 
 | // mojo/nacl doesn't depend on any Chromium headers, so we can't use a #define | 
 | // from there. | 
 | #define NACL_MOJO_DESC (NACL_CHROME_DESC_BASE + 3) | 
 |  | 
 | bool g_irt_mojo_valid = false; | 
 | struct nacl_irt_mojo g_irt_mojo; | 
 |  | 
 | struct nacl_irt_mojo* get_irt_mojo() { | 
 |   if (!g_irt_mojo_valid) { | 
 |     size_t rc = nacl_interface_query(NACL_IRT_MOJO_v0_1, | 
 |                                      &g_irt_mojo, | 
 |                                      sizeof(g_irt_mojo)); | 
 |     if (rc != sizeof(g_irt_mojo)) | 
 |       return NULL; | 
 |     else | 
 |       g_irt_mojo_valid = true; | 
 |   } | 
 |   return &g_irt_mojo; | 
 | } | 
 |  | 
 | {{body}} |