| OLD | NEW |
| 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 |
| 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ | 11 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ |
| 12 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ | 12 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ |
| 13 | 13 |
| 14 #include <set> | 14 #include <set> |
| 15 | 15 |
| 16 #include "native_client/src/include/nacl_macros.h" | 16 #include "native_client/src/include/nacl_macros.h" |
| 17 #include "native_client/src/include/nacl_scoped_ptr.h" | 17 #include "native_client/src/include/nacl_scoped_ptr.h" |
| 18 #include "native_client/src/include/nacl_string.h" | 18 #include "native_client/src/include/nacl_string.h" |
| 19 #include "native_client/src/shared/platform/nacl_sync.h" | 19 #include "native_client/src/shared/platform/nacl_sync.h" |
| 20 #include "native_client/src/shared/srpc/nacl_srpc.h" | 20 #include "native_client/src/shared/srpc/nacl_srpc.h" |
| 21 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" | 21 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" |
| 22 #include "native_client/src/trusted/nonnacl_util/sel_ldr_launcher.h" | 22 #include "native_client/src/trusted/nonnacl_util/sel_ldr_launcher.h" |
| 23 #include "native_client/src/trusted/reverse_service/reverse_service.h" | 23 #include "native_client/src/trusted/reverse_service/reverse_service.h" |
| 24 #include "native_client/src/trusted/weak_ref/weak_ref.h" | 24 #include "native_client/src/trusted/weak_ref/weak_ref.h" |
| 25 | 25 |
| 26 #include "ppapi/cpp/completion_callback.h" | 26 #include "ppapi/cpp/completion_callback.h" |
| 27 | |
| 28 #include "ppapi/native_client/src/trusted/plugin/utility.h" | 27 #include "ppapi/native_client/src/trusted/plugin/utility.h" |
| 28 #include "ppapi/utility/completion_callback_factory.h" |
| 29 | 29 |
| 30 struct NaClFileInfo; | 30 struct NaClFileInfo; |
| 31 | 31 |
| 32 namespace nacl { | 32 namespace nacl { |
| 33 class DescWrapper; | 33 class DescWrapper; |
| 34 } // namespace | 34 } // namespace |
| 35 | 35 |
| 36 namespace pp { | 36 namespace pp { |
| 37 class FileIO; | 37 class FileIO; |
| 38 } // namespace | 38 } // namespace |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 // TODO(sehr): This class should also implement factory methods, using the | 222 // TODO(sehr): This class should also implement factory methods, using the |
| 223 // Start method below. | 223 // Start method below. |
| 224 ServiceRuntime(Plugin* plugin, | 224 ServiceRuntime(Plugin* plugin, |
| 225 const Manifest* manifest, | 225 const Manifest* manifest, |
| 226 bool should_report_uma, | 226 bool should_report_uma, |
| 227 pp::CompletionCallback init_done_cb, | 227 pp::CompletionCallback init_done_cb, |
| 228 pp::CompletionCallback crash_cb); | 228 pp::CompletionCallback crash_cb); |
| 229 // The destructor terminates the sel_ldr process. | 229 // The destructor terminates the sel_ldr process. |
| 230 ~ServiceRuntime(); | 230 ~ServiceRuntime(); |
| 231 | 231 |
| 232 // Spawn the sel_ldr instance. On success, returns true. | 232 // Spawn the sel_ldr instance. |
| 233 // On failure, returns false and |error_string| is set to something | 233 void StartSelLdr(const SelLdrStartParams& params, |
| 234 // describing the error. | 234 pp::CompletionCallback callback); |
| 235 bool StartSelLdr(const SelLdrStartParams& params); | |
| 236 | 235 |
| 237 // If starting sel_ldr from a background thread, wait for sel_ldr to | 236 // If starting sel_ldr from a background thread, wait for sel_ldr to |
| 238 // actually start. | 237 // actually start. |
| 239 void WaitForSelLdrStart(); | 238 void WaitForSelLdrStart(); |
| 240 | 239 |
| 241 // Signal to waiting threads that StartSelLdr is complete. | 240 // Signal to waiting threads that StartSelLdr is complete. |
| 242 // Done externally, in case external users want to write to shared | 241 // Done externally, in case external users want to write to shared |
| 243 // memory that is yet to be fenced. | 242 // memory that is yet to be fenced. |
| 244 void SignalStartSelLdrDone(); | 243 void SignalStartSelLdrDone(); |
| 245 | 244 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 267 | 266 |
| 268 // To establish quota callbacks the pnacl coordinator needs to communicate | 267 // To establish quota callbacks the pnacl coordinator needs to communicate |
| 269 // with the reverse interface. | 268 // with the reverse interface. |
| 270 PluginReverseInterface* rev_interface() const { return rev_interface_; } | 269 PluginReverseInterface* rev_interface() const { return rev_interface_; } |
| 271 | 270 |
| 272 private: | 271 private: |
| 273 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime); | 272 NACL_DISALLOW_COPY_AND_ASSIGN(ServiceRuntime); |
| 274 bool LoadModule(nacl::DescWrapper* shm, ErrorInfo* error_info); | 273 bool LoadModule(nacl::DescWrapper* shm, ErrorInfo* error_info); |
| 275 bool InitReverseService(ErrorInfo* error_info); | 274 bool InitReverseService(ErrorInfo* error_info); |
| 276 bool StartModule(ErrorInfo* error_info); | 275 bool StartModule(ErrorInfo* error_info); |
| 276 void StartSelLdrContinuation(int32_t pp_error, |
| 277 PP_CompletionCallback callback); |
| 278 |
| 277 | 279 |
| 278 NaClSrpcChannel command_channel_; | 280 NaClSrpcChannel command_channel_; |
| 279 Plugin* plugin_; | 281 Plugin* plugin_; |
| 280 bool main_service_runtime_; | 282 bool main_service_runtime_; |
| 281 nacl::ReverseService* reverse_service_; | 283 nacl::ReverseService* reverse_service_; |
| 282 nacl::scoped_ptr<nacl::SelLdrLauncherBase> subprocess_; | 284 nacl::scoped_ptr<nacl::SelLdrLauncherBase> subprocess_; |
| 283 | 285 |
| 284 nacl::WeakRefAnchor* anchor_; | 286 nacl::WeakRefAnchor* anchor_; |
| 285 | 287 |
| 286 PluginReverseInterface* rev_interface_; | 288 PluginReverseInterface* rev_interface_; |
| 287 | 289 |
| 288 // Mutex to protect exit_status_. | 290 // Mutex to protect exit_status_. |
| 289 // Also, in conjunction with cond_ it is used to signal when | 291 // Also, in conjunction with cond_ it is used to signal when |
| 290 // StartSelLdr is complete with either success or error. | 292 // StartSelLdr is complete with either success or error. |
| 291 NaClMutex mu_; | 293 NaClMutex mu_; |
| 292 NaClCondVar cond_; | 294 NaClCondVar cond_; |
| 293 int exit_status_; | 295 int exit_status_; |
| 294 bool start_sel_ldr_done_; | 296 bool start_sel_ldr_done_; |
| 297 |
| 298 PP_Var start_sel_ldr_error_message_; |
| 299 pp::CompletionCallbackFactory<ServiceRuntime> callback_factory_; |
| 295 }; | 300 }; |
| 296 | 301 |
| 297 } // namespace plugin | 302 } // namespace plugin |
| 298 | 303 |
| 299 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ | 304 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_SERVICE_RUNTIME_H_ |
| OLD | NEW |