| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GARNET_BIN_CHREALM_CHREALM_H_ |
| #define GARNET_BIN_CHREALM_CHREALM_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include <lib/fdio/spawn.h> |
| #include <zircon/status.h> |
| #include <zircon/types.h> |
| |
| namespace chrealm { |
| |
| // Like |RunBinaryInRealmAsync|, but waits for the process to terminate. |
| zx_status_t RunBinaryInRealm(const std::string& realm_path, const char** argv, |
| int64_t* return_code, std::string* error); |
| |
| // Spawns a process running the binary with a namespace reflecting |realm_path|. |
| // Does not block for the command to finish. |
| // |
| // |realm_path| is an argument to the realm directory in /hub. |
| // |argv| is a null-terminated list of arguments for the job. |
| // |job| is the job to run the process under. If invalid, defaults to the |
| // realm's job. |
| // |
| // |flags| is the set of flags to pass to |fdio_spawn|. FDIO_CLONE_NAMESPACE |
| // is masked out. |
| // |
| // |additional_actions| is a set of actions to pass to |fdio_spawn|, in |
| // addition to the actions to build the namespace. Defaults to empty. |
| // |
| // |proc| is a handle to the process that was launched. |
| zx_status_t SpawnBinaryInRealmAsync( |
| const std::string& realm_path, const char** argv, zx_handle_t job, |
| int32_t flags, const std::vector<fdio_spawn_action_t>& additional_actions, |
| zx_handle_t* proc, std::string* error); |
| |
| } // namespace chrealm |
| |
| #endif // GARNET_BIN_CHREALM_CHREALM_H_ |