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

Unified Diff: mojo/nacl/nonsfi/irt_mojo_nonsfi.cc

Issue 1382713002: Creating a pexe content handler to translate and run pexes. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698