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

Side by Side Diff: components/nacl/renderer/plugin/service_runtime.h

Issue 1128943003: Move PNaCl process startup back to the main thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 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 /* -*- c++ -*- */ 1 /* -*- c++ -*- */
2 /* 2 /*
3 * Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 * Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 // A class containing information regarding a socket connection to a 8 // A class containing information regarding a socket connection to a
9 // service runtime instance. 9 // service runtime instance.
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 PP_Instance pp_instance, 49 PP_Instance pp_instance,
50 bool main_service_runtime, 50 bool main_service_runtime,
51 bool uses_nonsfi_mode); 51 bool uses_nonsfi_mode);
52 // The destructor terminates the sel_ldr process. 52 // The destructor terminates the sel_ldr process.
53 ~ServiceRuntime(); 53 ~ServiceRuntime();
54 54
55 // Spawn the sel_ldr instance. 55 // Spawn the sel_ldr instance.
56 void StartSelLdr(const SelLdrStartParams& params, 56 void StartSelLdr(const SelLdrStartParams& params,
57 pp::CompletionCallback callback); 57 pp::CompletionCallback callback);
58 58
59 // If starting sel_ldr from a background thread, wait for sel_ldr to
60 // actually start. Returns |false| if timed out waiting for the process
61 // to start. Otherwise, returns |true| if StartSelLdr is complete
62 // (either successfully or unsuccessfully).
63 bool WaitForSelLdrStart();
64
65 // Signal to waiting threads that StartSelLdr is complete (either
66 // successfully or unsuccessfully).
67 void SignalStartSelLdrDone();
68
69 // If starting the nexe from a background thread, wait for the nexe to
70 // actually start. Returns |true| is the nexe started successfully.
71 bool WaitForNexeStart();
72
73 // Returns |true| if WaitForSelLdrStart() timed out.
74 bool SelLdrWaitTimedOut();
75
76 // Signal to waiting threads that LoadNexeAndStart is complete (either
77 // successfully or unsuccessfully).
78 void SignalNexeStarted(bool ok);
79
80 // Establish an SrpcClient to the sel_ldr instance and start the nexe. 59 // Establish an SrpcClient to the sel_ldr instance and start the nexe.
81 // This function must be called on the main thread. 60 // This function must be called on the main thread.
82 // This function must only be called once. 61 // This function must only be called once.
83 void StartNexe(); 62 void StartNexe();
84 63
85 // Starts the application channel to the nexe. 64 // Starts the application channel to the nexe.
86 SrpcClient* SetupAppChannel(); 65 SrpcClient* SetupAppChannel();
87 66
88 Plugin* plugin() const { return plugin_; } 67 Plugin* plugin() const { return plugin_; }
89 void Shutdown(); 68 void Shutdown();
90 69
91 bool main_service_runtime() const { return main_service_runtime_; } 70 bool main_service_runtime() const { return main_service_runtime_; }
92 71
93 private: 72 private:
94 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime); 73 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime);
95 74
96 bool SetupCommandChannel(); 75 bool SetupCommandChannel();
97 76
98 void ReportLoadError(const ErrorInfo& error_info); 77 void ReportLoadError(const ErrorInfo& error_info);
99 78
100 NaClSrpcChannel command_channel_; 79 NaClSrpcChannel command_channel_;
101 Plugin* plugin_; 80 Plugin* plugin_;
102 PP_Instance pp_instance_; 81 PP_Instance pp_instance_;
103 bool main_service_runtime_; 82 bool main_service_runtime_;
104 bool uses_nonsfi_mode_; 83 bool uses_nonsfi_mode_;
105 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_; 84 nacl::scoped_ptr<SelLdrLauncherChrome> subprocess_;
106 85
107 // Mutex and CondVar to protect start_sel_ldr_done_ and nexe_started_.
108 NaClMutex mu_;
109 NaClCondVar cond_;
110 bool start_sel_ldr_done_;
111 bool sel_ldr_wait_timed_out_;
112 bool start_nexe_done_;
113 bool nexe_started_ok_;
114
115 NaClHandle bootstrap_channel_; 86 NaClHandle bootstrap_channel_;
116 }; 87 };
117 88
118 } // namespace plugin 89 } // namespace plugin
119 90
120 #endif // COMPONENTS_NACL_RENDERER_PLUGIN_SERVICE_RUNTIME_H_ 91 #endif // COMPONENTS_NACL_RENDERER_PLUGIN_SERVICE_RUNTIME_H_
OLDNEW
« no previous file with comments | « components/nacl/renderer/plugin/pnacl_translate_thread.cc ('k') | components/nacl/renderer/plugin/service_runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698