blob: afd0311cf58c2362b839d2cd5683c961a80452fb [file] [log] [blame]
// 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 SRC_SYS_LIB_CHREALM_CHREALM_H_
#define SRC_SYS_LIB_CHREALM_CHREALM_H_
#include <lib/fdio/spawn.h>
#include <zircon/status.h>
#include <zircon/types.h>
#include <string>
#include <vector>
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 // SRC_SYS_LIB_CHREALM_CHREALM_H_