Index: mojo/nacl/nonsfi/irt_mojo_nonsfi.cc |
diff --git a/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc b/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc |
index 4fed496dda4c831685e0759dcf5b0b5efc30f5ad..2c34e45c33d8306696415797b106585f68916309 100644 |
--- a/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc |
+++ b/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc |
@@ -8,15 +8,12 @@ |
#include "mojo/public/platform/nacl/mgl_irt.h" |
#include "mojo/public/platform/nacl/mojo_irt.h" |
#include "native_client/src/public/irt_core.h" |
+#include "native_client/src/untrusted/irt/irt_dev.h" |
namespace { |
MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID; |
- |
-MojoResult _MojoGetInitialHandle(MojoHandle* handle) { |
- *handle = g_mojo_handle; |
- return MOJO_RESULT_OK; |
-} |
+bool g_running_translator = false; |
const struct nacl_irt_mojo kIrtMojo = { |
MojoCreateSharedBuffer, |
@@ -37,7 +34,7 @@ const struct nacl_irt_mojo kIrtMojo = { |
MojoCreateMessagePipe, |
MojoWriteMessage, |
MojoReadMessage, |
- _MojoGetInitialHandle, |
+ nacl::MojoGetInitialHandle, |
}; |
const struct nacl_irt_mgl kIrtMGL = { |
@@ -57,23 +54,65 @@ const struct nacl_irt_mgl_signal_sync_point kIrtMGLSignalSyncPoint = { |
MGLSignalSyncPoint, |
}; |
+int NotPNaClFilter() { |
+ return g_running_translator; |
+} |
+ |
const struct nacl_irt_interface kIrtInterfaces[] = { |
- {NACL_IRT_MOJO_v0_1, &kIrtMojo, sizeof(kIrtMojo), nullptr}, |
- {NACL_IRT_MGL_v0_1, &kIrtMGL, sizeof(kIrtMGL), nullptr}, |
- {NACL_IRT_MGL_ONSCREEN_v0_1, &kIrtMGLOnScreen, sizeof(kIrtMGLOnScreen), |
- nullptr}, |
- {NACL_IRT_MGL_SIGNAL_SYNC_POINT_v0_1, &kIrtMGLSignalSyncPoint, |
- sizeof(kIrtMGLSignalSyncPoint), nullptr}, |
+ // Interface to call Mojo functions |
+ { NACL_IRT_MOJO_v0_1, |
+ &kIrtMojo, |
+ sizeof(kIrtMojo), |
+ nullptr }, |
+ // Interface to call PNaCl translation |
+ { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_COMPILE_v0_1, |
+ &nacl::nacl_irt_private_pnacl_translator_compile, |
+ sizeof(nacl_irt_private_pnacl_translator_compile), |
+ NotPNaClFilter }, |
+ // Interface to call PNaCl linking |
+ { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_LINK_v0_1, |
+ &nacl::nacl_irt_private_pnacl_translator_link, |
+ sizeof(nacl_irt_private_pnacl_translator_link), |
+ NotPNaClFilter }, |
+ // Adds mechanism for opening object files, like crtbegin.o |
+ { NACL_IRT_RESOURCE_OPEN_v0_1, |
+ &nacl::nacl_irt_resource_open, |
+ sizeof(nacl_irt_resource_open), |
+ NotPNaClFilter }, |
+ // GPU functions which give control over MGL context |
+ { NACL_IRT_MGL_v0_1, |
+ &kIrtMGL, |
+ sizeof(kIrtMGL), |
+ nullptr }, |
+ // GPU functions which update framebuffer with respect to the display |
+ { NACL_IRT_MGL_ONSCREEN_v0_1, |
+ &kIrtMGLOnScreen, |
+ sizeof(kIrtMGLOnScreen), |
+ nullptr }, |
+ // GPU functions to synchronize CPU and GPU services |
+ { NACL_IRT_MGL_SIGNAL_SYNC_POINT_v0_1, |
+ &kIrtMGLSignalSyncPoint, |
+ sizeof(kIrtMGLSignalSyncPoint), |
+ nullptr }, |
}; |
} // namespace |
namespace nacl { |
+MojoResult MojoGetInitialHandle(MojoHandle* handle) { |
+ *handle = g_mojo_handle; |
+ return MOJO_RESULT_OK; |
+} |
+ |
void MojoSetInitialHandle(MojoHandle handle) { |
g_mojo_handle = handle; |
} |
+void MojoPnaclTranslatorEnable() { |
+ g_running_translator = true; |
+} |
+ |
size_t MojoIrtNonsfiQuery(const char* interface_ident, |
void* table, |
size_t tablesize) { |