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

Side by Side Diff: src/untrusted/pnacl_irt_shim/shim_ppapi.c

Issue 8776023: Switch the nop pnacl x86-64 IRT shim to the real one generated from IDL. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: disable pnacl_example_browser for x86-64 until shim updated Created 9 years 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 | Annotate | Revision Log
« no previous file with comments | « src/untrusted/pnacl_irt_shim/nacl.scons ('k') | tests/pnacl_client_translator/nacl.scons » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/untrusted/pnacl_irt_shim/shim_ppapi.h" 7 #include "native_client/src/untrusted/pnacl_irt_shim/shim_ppapi.h"
8 8
9 #include <string.h> 9 #include <string.h>
10 #include "native_client/src/shared/ppapi_proxy/ppruntime.h" 10 #include "native_client/src/shared/ppapi_proxy/ppruntime.h"
11 #include "native_client/src/untrusted/irt/irt.h" 11 #include "native_client/src/untrusted/irt/irt.h"
12 #include "native_client/src/untrusted/irt/irt_ppapi.h" 12 #include "native_client/src/untrusted/irt/irt_ppapi.h"
13 #include "ppapi/generators/pnacl_shim.h"
13 14
14 TYPE_nacl_irt_query __pnacl_real_irt_interface; 15 TYPE_nacl_irt_query __pnacl_real_irt_interface;
15 16
16 /* 17 /*
17 * These remember the interface pointers the user registers by calling the 18 * These remember the interface pointers the user registers by calling the
18 * IRT entry point. 19 * IRT entry point.
19 */ 20 */
20 static struct PP_StartFunctions user_start_functions; 21 static struct PP_StartFunctions user_start_functions;
21 22
22 /*
23 * This remembers the interface pointer the IRT passes through
24 * PPP_InitializeModule.
25 */
26 static const void *(*user_PPBGetInterface)(const char *interface_name);
27
28
29 /*
30 * Calls from user code to the PPB interfaces pass through here and may require
31 * shims to convert the ABI.
32 */
33 static const void *wrap_PPBGetInterface(const char *interface_name) {
34 /* TODO(sehr): call PPB shims here. */
35 return (*user_PPBGetInterface)(interface_name);
36 }
37
38 static int32_t wrap_PPPInitializeModule(PP_Module module_id, 23 static int32_t wrap_PPPInitializeModule(PP_Module module_id,
39 PPB_GetInterface get_browser_intf) { 24 PPB_GetInterface get_browser_intf) {
40 user_PPBGetInterface = get_browser_intf; 25 __set_real_Pnacl_PPBGetInterface(get_browser_intf);
26 /*
27 * Calls from user code to the PPB interfaces pass through here and may
28 * require shims to convert the ABI.
29 */
41 return (*user_start_functions.PPP_InitializeModule)(module_id, 30 return (*user_start_functions.PPP_InitializeModule)(module_id,
42 wrap_PPBGetInterface); 31 &__Pnacl_PPBGetInterface);
43 } 32 }
44 33
45 static void wrap_PPPShutdownModule() { 34 static void wrap_PPPShutdownModule() {
46 (*user_start_functions.PPP_ShutdownModule)(); 35 (*user_start_functions.PPP_ShutdownModule)();
47 } 36 }
48 37
49 /*
50 * Calls from the IRT to the user plugin pass through here and may require
51 * shims to convert the ABI.
52 */
53 static const void *wrap_PPPGetInterface(const char *interface_name) {
54 /* TODO(sehr): call PPP shims here. */
55 return (*user_start_functions.PPP_GetInterface)(interface_name);
56 }
57
58 static const struct PP_StartFunctions wrapped_ppapi_methods = { 38 static const struct PP_StartFunctions wrapped_ppapi_methods = {
59 wrap_PPPInitializeModule, 39 wrap_PPPInitializeModule,
60 wrap_PPPShutdownModule, 40 wrap_PPPShutdownModule,
61 wrap_PPPGetInterface 41 /*
42 * Calls from the IRT to the user plugin pass through here and may require
43 * shims to convert the ABI.
44 */
45 __Pnacl_PPPGetInterface
62 }; 46 };
63 47
64 static struct nacl_irt_ppapihook real_irt_ppapi_hook; 48 static struct nacl_irt_ppapihook real_irt_ppapi_hook;
65 49
66 static int wrap_ppapi_start(const struct PP_StartFunctions *funcs) { 50 static int wrap_ppapi_start(const struct PP_StartFunctions *funcs) {
67 /* 51 /*
68 * Save the user's real bindings for the start functions. 52 * Save the user's real bindings for the start functions.
69 */ 53 */
70 user_start_functions = *funcs; 54 user_start_functions = *funcs;
55 __set_real_Pnacl_PPPGetInterface(user_start_functions.PPP_GetInterface);
56
71 /* 57 /*
72 * Invoke the IRT's ppapi_start interface with the wrapped interface. 58 * Invoke the IRT's ppapi_start interface with the wrapped interface.
73 */ 59 */
74 return (*real_irt_ppapi_hook.ppapi_start)(&wrapped_ppapi_methods); 60 return (*real_irt_ppapi_hook.ppapi_start)(&wrapped_ppapi_methods);
75 } 61 }
76 62
77 static struct nacl_irt_ppapihook ppapi_hook = { 63 static struct nacl_irt_ppapihook ppapi_hook = {
78 wrap_ppapi_start, 64 wrap_ppapi_start,
79 NULL 65 NULL
80 }; 66 };
(...skipping 26 matching lines...) Expand all
107 real_irt_ppapi_hook.ppapi_register_thread_creator; 93 real_irt_ppapi_hook.ppapi_register_thread_creator;
108 /* 94 /*
109 * Copy the interface structure into the client. 95 * Copy the interface structure into the client.
110 */ 96 */
111 if (sizeof ppapi_hook <= tablesize) { 97 if (sizeof ppapi_hook <= tablesize) {
112 memcpy(table, &ppapi_hook, sizeof ppapi_hook); 98 memcpy(table, &ppapi_hook, sizeof ppapi_hook);
113 return sizeof ppapi_hook; 99 return sizeof ppapi_hook;
114 } 100 }
115 return 0; 101 return 0;
116 } 102 }
OLDNEW
« no previous file with comments | « src/untrusted/pnacl_irt_shim/nacl.scons ('k') | tests/pnacl_client_translator/nacl.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698