Android-cuttlefish cvd tool
Classes | Functions | Variables
cuttlefish::anonymous_namespace{main.cc} Namespace Reference

Classes

class  CuttlefishEnvironment
 
struct  FlagVaules
 
class  InstanceLifecycle
 
struct  StatusFlags
 
struct  WebAccessUrlParam
 

Functions

android::base::LogSeverity CvdVerbosityOption (const int argc, char **argv)
 
Result< void > KillOldServer ()
 
Result< void > EnsureCvdDirectoriesExist ()
 
void TryInheritServerDatabase ()
 
void IncreaseFileLimit ()
 
Result< void > CvdMain (int argc, char **argv, char **envp)
 
std::string ColoredUrl (const std::string &url)
 
bool ContainHelpOption (int argc, char **argv)
 
Result< void > CvdEnvMain (int argc, char **argv)
 
int ImportLocationsCvdMain (int argc, char **argv)
 
void SendDisclosure (SharedFD fd)
 
int SendIdDisclosureMain (int argc, char **argv)
 
int SendSmsMain (int argc, char **argv)
 
int UpdateLocationCvdMain (int argc, char **argv)
 
void UpdateSecurityAlgorithm (SharedFD fd)
 
int UpdateSecurityAlgorithmMain (int argc, char **argv)
 
template<typename T >
void LogError (Result< T > res)
 
Result< void > AddNetsimdLogs (WritableZip &archive)
 
Result< void > CreateDeviceBugreport (const CuttlefishConfig::InstanceSpecific &ins, const std::string &out_dir)
 
Result< void > AddAdbBugreport (const CuttlefishConfig::InstanceSpecific &instance, WritableZip &archive)
 
void TakeHostBugreport (const CuttlefishConfig *config, WritableZip &archive)
 
Result< void > CvdHostBugreportMain (int argc, char **argv)
 
static bool ShouldRestartProcess (siginfo_t const &info, const Parser &parsed)
 
std::string_view ExecutableShortName (std::string_view short_name)
 
Result< SubprocessOptionsOptionsForExecutable (std::string_view name)
 
Result< int > RunProcessRestarter (std::vector< std::string > args)
 
fruit::Component runCvdComponent (const CuttlefishConfig *config, const CuttlefishConfig::EnvironmentSpecific *environment, const CuttlefishConfig::InstanceSpecific *instance)
 
Result< void > StdinValid ()
 
void ConfigureLogs (const CuttlefishConfig &config, const CuttlefishConfig::InstanceSpecific &instance)
 
Result< std::string > ToAbsolutePath (const std::string &snapshot_path)
 
Result< void > BroadcastLauncherAction (const CuttlefishConfig &config, const Parsed &parsed, run_cvd::ExtendedLauncherAction extended_action)
 
Result< void > SnapshotCvdMain (std::vector< std::string > args)
 
std::string GetHostToolPath ()
 
std::string SubtoolPath (const std::string &subtool_base)
 
std::string AssemblerPath ()
 
std::string RunnerPath ()
 
int InvokeAssembler (const std::string &assembler_stdin, std::string &assembler_stdout, const std::vector< std::string > &argv)
 
Subprocess StartRunner (SharedFD runner_stdin, const CuttlefishConfig::InstanceSpecific &instance, const std::vector< std::string > &argv)
 
std::string WriteFiles (FetcherConfig fetcher_config)
 
bool HostToolsUpdated ()
 
const std::unordered_set< std::string > & BoolFlags ()
 
int CvdInternalStartMain (int argc, char **argv)
 
Result< StatusFlagsGetFlagValues (int argc, char **argv)
 
std::string CalcWebAccessUrl (const WebAccessUrlParam &web_access_url_param)
 
Json::Value PopulateDevicesInfoFromInstance (const CuttlefishConfig &config, const CuttlefishConfig::InstanceSpecific &instance_config)
 
Result< void > CvdStatusMain (const StatusFlags &flag_values)
 
std::set< std::string > FallbackDirs ()
 
std::set< std::string > DirsForInstance (const CuttlefishConfig &config, const CuttlefishConfig::InstanceSpecific instance)
 
std::set< pid_t > GetCandidateProcessGroups (const std::set< std::string > &dirs)
 
int FallBackStop (const std::set< std::string > &dirs)
 
Result< void > CleanStopInstance (const CuttlefishConfig::InstanceSpecific &instance_config, const std::int32_t wait_for_launcher)
 
int StopInstance (const CuttlefishConfig &config, const CuttlefishConfig::InstanceSpecific &instance, const std::int32_t wait_for_launcher)
 
void ReleaseAllocdResources (SharedFD allocd_sock, uint32_t session_id)
 Send a StopSession request to allocd. More...
 
int StopCvdMain (const std::int32_t wait_for_launcher, const bool clear_instance_dirs)
 

Variables

constexpr char kCvdEnvHelpMessage []
 
constexpr char kServiceControlEnvProxy [] = "ControlEnvProxyService"
 
constexpr int kFallbackErrorBit = 1 << 2
 

Function Documentation

◆ AddAdbBugreport()

Result< void > cuttlefish::anonymous_namespace{main.cc}::AddAdbBugreport ( const CuttlefishConfig::InstanceSpecific instance,
WritableZip archive 
)

◆ AddNetsimdLogs()

Result< void > cuttlefish::anonymous_namespace{main.cc}::AddNetsimdLogs ( WritableZip archive)

◆ AssemblerPath()

std::string cuttlefish::anonymous_namespace{main.cc}::AssemblerPath ( )

◆ BoolFlags()

const std::unordered_set< std::string > & cuttlefish::anonymous_namespace{main.cc}::BoolFlags ( )

◆ BroadcastLauncherAction()

Result< void > cuttlefish::anonymous_namespace{main.cc}::BroadcastLauncherAction ( const CuttlefishConfig config,
const Parsed parsed,
run_cvd::ExtendedLauncherAction  extended_action 
)

◆ CalcWebAccessUrl()

std::string cuttlefish::anonymous_namespace{main.cc}::CalcWebAccessUrl ( const WebAccessUrlParam web_access_url_param)

◆ CleanStopInstance()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CleanStopInstance ( const CuttlefishConfig::InstanceSpecific instance_config,
const std::int32_t  wait_for_launcher 
)

◆ ColoredUrl()

std::string cuttlefish::anonymous_namespace{main.cc}::ColoredUrl ( const std::string &  url)

Returns the URL as a colored string

If stderr is not terminal, no color. If stderr is a tty, tries to use ".deb" file color If .deb is not available in LS_COLORS, uses .zip color. If none are available, use a default color that is red.

◆ ConfigureLogs()

void cuttlefish::anonymous_namespace{main.cc}::ConfigureLogs ( const CuttlefishConfig config,
const CuttlefishConfig::InstanceSpecific instance 
)

◆ ContainHelpOption()

bool cuttlefish::anonymous_namespace{main.cc}::ContainHelpOption ( int  argc,
char **  argv 
)

◆ CreateDeviceBugreport()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CreateDeviceBugreport ( const CuttlefishConfig::InstanceSpecific ins,
const std::string &  out_dir 
)

◆ CvdEnvMain()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CvdEnvMain ( int  argc,
char **  argv 
)

◆ CvdHostBugreportMain()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CvdHostBugreportMain ( int  argc,
char **  argv 
)

◆ CvdInternalStartMain()

int cuttlefish::anonymous_namespace{main.cc}::CvdInternalStartMain ( int  argc,
char **  argv 
)

◆ CvdMain()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CvdMain ( int  argc,
char **  argv,
char **  envp 
)

◆ CvdStatusMain()

Result< void > cuttlefish::anonymous_namespace{main.cc}::CvdStatusMain ( const StatusFlags flag_values)

◆ CvdVerbosityOption()

android::base::LogSeverity cuttlefish::anonymous_namespace{main.cc}::CvdVerbosityOption ( const int  argc,
char **  argv 
)

Returns –verbosity value if ever exist in the entire commandline args

Note that this will also pick up from the subtool arguments: e.g. cvd start –verbosity=DEBUG

This may be incorrect as the verbosity should be ideally applied to the launch_cvd/cvd_internal_start only.

However, parsing the –verbosity flag only from the driver is quite complicated as we do not know the full list of the subcommands, the subcommands flags, and even the selector/driver flags.

Thus, we live with the corner case for now.

◆ DirsForInstance()

std::set< std::string > cuttlefish::anonymous_namespace{main.cc}::DirsForInstance ( const CuttlefishConfig config,
const CuttlefishConfig::InstanceSpecific  instance 
)

◆ EnsureCvdDirectoriesExist()

Result< void > cuttlefish::anonymous_namespace{main.cc}::EnsureCvdDirectoriesExist ( )

◆ ExecutableShortName()

std::string_view cuttlefish::anonymous_namespace{main.cc}::ExecutableShortName ( std::string_view  short_name)

◆ FallbackDirs()

std::set< std::string > cuttlefish::anonymous_namespace{main.cc}::FallbackDirs ( )

◆ FallBackStop()

int cuttlefish::anonymous_namespace{main.cc}::FallBackStop ( const std::set< std::string > &  dirs)

◆ GetCandidateProcessGroups()

std::set< pid_t > cuttlefish::anonymous_namespace{main.cc}::GetCandidateProcessGroups ( const std::set< std::string > &  dirs)

◆ GetFlagValues()

FlagVaules cuttlefish::anonymous_namespace{main.cc}::GetFlagValues ( int  argc,
char **  argv 
)

◆ GetHostToolPath()

std::string cuttlefish::anonymous_namespace{main.cc}::GetHostToolPath ( )

◆ HostToolsUpdated()

bool cuttlefish::anonymous_namespace{main.cc}::HostToolsUpdated ( )

◆ ImportLocationsCvdMain()

int cuttlefish::anonymous_namespace{main.cc}::ImportLocationsCvdMain ( int  argc,
char **  argv 
)

◆ IncreaseFileLimit()

void cuttlefish::anonymous_namespace{main.cc}::IncreaseFileLimit ( )

Increase the file descriptor limit for this process and its descendants.

Crosvm tends to use many file descriptors, especially when running in sandbox mode, sometimes exceeding the default limit.

◆ InvokeAssembler()

int cuttlefish::anonymous_namespace{main.cc}::InvokeAssembler ( const std::string &  assembler_stdin,
std::string &  assembler_stdout,
const std::vector< std::string > &  argv 
)

◆ KillOldServer()

Result< void > cuttlefish::anonymous_namespace{main.cc}::KillOldServer ( )

Terminates a cvd server listening on "cvd_server"

So far, the server processes across users were listing on the "cvd_server" socket. And, so far, we had one user. Now, we have multiple users. Each server listens to cvd_server_<uid>. The thing is if there is a server process started out of an old executable it will be listening to "cvd_server," and thus we should kill the server process first.

◆ LogError()

template<typename T >
void cuttlefish::anonymous_namespace{main.cc}::LogError ( Result< T >  res)

◆ OptionsForExecutable()

Result< SubprocessOptions > cuttlefish::anonymous_namespace{main.cc}::OptionsForExecutable ( std::string_view  name)

◆ PopulateDevicesInfoFromInstance()

Json::Value cuttlefish::anonymous_namespace{main.cc}::PopulateDevicesInfoFromInstance ( const CuttlefishConfig config,
const CuttlefishConfig::InstanceSpecific instance_config 
)

◆ ReleaseAllocdResources()

void cuttlefish::anonymous_namespace{main.cc}::ReleaseAllocdResources ( SharedFD  allocd_sock,
uint32_t  session_id 
)

Send a StopSession request to allocd.

◆ runCvdComponent()

fruit::Component cuttlefish::anonymous_namespace{main.cc}::runCvdComponent ( const CuttlefishConfig config,
const CuttlefishConfig::EnvironmentSpecific environment,
const CuttlefishConfig::InstanceSpecific instance 
)

◆ RunnerPath()

std::string cuttlefish::anonymous_namespace{main.cc}::RunnerPath ( )

◆ RunProcessRestarter()

Result< int > cuttlefish::anonymous_namespace{main.cc}::RunProcessRestarter ( std::vector< std::string >  args)

◆ SendDisclosure()

void cuttlefish::anonymous_namespace{main.cc}::SendDisclosure ( SharedFD  fd)

◆ SendIdDisclosureMain()

int cuttlefish::anonymous_namespace{main.cc}::SendIdDisclosureMain ( int  argc,
char **  argv 
)

◆ SendSmsMain()

int cuttlefish::anonymous_namespace{main.cc}::SendSmsMain ( int  argc,
char **  argv 
)

◆ ShouldRestartProcess()

static bool cuttlefish::anonymous_namespace{main.cc}::ShouldRestartProcess ( siginfo_t const &  info,
const Parser parsed 
)
static

◆ SnapshotCvdMain()

Result< void > cuttlefish::anonymous_namespace{main.cc}::SnapshotCvdMain ( std::vector< std::string >  args)

◆ StartRunner()

Subprocess cuttlefish::anonymous_namespace{main.cc}::StartRunner ( SharedFD  runner_stdin,
const CuttlefishConfig::InstanceSpecific instance,
const std::vector< std::string > &  argv 
)

◆ StdinValid()

Result< void > cuttlefish::anonymous_namespace{main.cc}::StdinValid ( )

◆ StopCvdMain()

int cuttlefish::anonymous_namespace{main.cc}::StopCvdMain ( const std::int32_t  wait_for_launcher,
const bool  clear_instance_dirs 
)

◆ StopInstance()

int cuttlefish::anonymous_namespace{main.cc}::StopInstance ( const CuttlefishConfig config,
const CuttlefishConfig::InstanceSpecific instance,
const std::int32_t  wait_for_launcher 
)

◆ SubtoolPath()

std::string cuttlefish::anonymous_namespace{main.cc}::SubtoolPath ( const std::string &  subtool_base)

◆ TakeHostBugreport()

void cuttlefish::anonymous_namespace{main.cc}::TakeHostBugreport ( const CuttlefishConfig config,
WritableZip archive 
)

◆ ToAbsolutePath()

Result< std::string > cuttlefish::anonymous_namespace{main.cc}::ToAbsolutePath ( const std::string &  snapshot_path)

◆ TryInheritServerDatabase()

void cuttlefish::anonymous_namespace{main.cc}::TryInheritServerDatabase ( )

Persist a running server's instance database to the file.

It works by asking the server to restart itself using our executable file.

◆ UpdateLocationCvdMain()

int cuttlefish::anonymous_namespace{main.cc}::UpdateLocationCvdMain ( int  argc,
char **  argv 
)

◆ UpdateSecurityAlgorithm()

void cuttlefish::anonymous_namespace{main.cc}::UpdateSecurityAlgorithm ( SharedFD  fd)

◆ UpdateSecurityAlgorithmMain()

int cuttlefish::anonymous_namespace{main.cc}::UpdateSecurityAlgorithmMain ( int  argc,
char **  argv 
)

◆ WriteFiles()

std::string cuttlefish::anonymous_namespace{main.cc}::WriteFiles ( FetcherConfig  fetcher_config)

Variable Documentation

◆ kCvdEnvHelpMessage

constexpr char cuttlefish::anonymous_namespace{main.cc}::kCvdEnvHelpMessage[]
constexpr

◆ kFallbackErrorBit

constexpr int cuttlefish::anonymous_namespace{main.cc}::kFallbackErrorBit = 1 << 2
constexpr

◆ kServiceControlEnvProxy

constexpr char cuttlefish::anonymous_namespace{main.cc}::kServiceControlEnvProxy[] = "ControlEnvProxyService"
constexpr