Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8385d699 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Allow duration of some commands to be logged."

parents e75ab2a7 8d945c02
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -115,8 +115,9 @@ static const int32_t WEIGHT_FILE = 5;
// TODO: temporary variables and functions used during C++ refactoring
static Dumpstate& ds = Dumpstate::GetInstance();
static int RunCommand(const std::string& title, const std::vector<std::string>& full_command,
                      const CommandOptions& options = CommandOptions::DEFAULT) {
    return ds.RunCommand(title, full_command, options);
                      const CommandOptions& options = CommandOptions::DEFAULT,
                      bool verbose_duration = false) {
    return ds.RunCommand(title, full_command, options, verbose_duration);
}

// Reasonable value for max stats.
@@ -867,17 +868,17 @@ static void DoLogcat() {
    RunCommand(
        "EVENT LOG",
        {"logcat", "-b", "events", "-v", "threadtime", "-v", "printable", "-v", "uid", "-d", "*:v"},
        CommandOptions::WithTimeoutInMs(timeout_ms).Build());
        CommandOptions::WithTimeoutInMs(timeout_ms).Build(), true /* verbose_duration */);
    timeout_ms = logcat_timeout({"stats"});
    RunCommand(
        "STATS LOG",
        {"logcat", "-b", "stats", "-v", "threadtime", "-v", "printable", "-v", "uid", "-d", "*:v"},
        CommandOptions::WithTimeoutInMs(timeout_ms).Build());
        CommandOptions::WithTimeoutInMs(timeout_ms).Build(), true /* verbose_duration */);
    timeout_ms = logcat_timeout({"radio"});
    RunCommand(
        "RADIO LOG",
        {"logcat", "-b", "radio", "-v", "threadtime", "-v", "printable", "-v", "uid", "-d", "*:v"},
        CommandOptions::WithTimeoutInMs(timeout_ms).Build());
        CommandOptions::WithTimeoutInMs(timeout_ms).Build(), true /* verbose_duration */);

    RunCommand("LOG STATISTICS", {"logcat", "-b", "all", "-S"});

@@ -2814,8 +2815,8 @@ Dumpstate& Dumpstate::GetInstance() {
    return singleton_;
}

DurationReporter::DurationReporter(const std::string& title, bool logcat_only)
    : title_(title), logcat_only_(logcat_only) {
DurationReporter::DurationReporter(const std::string& title, bool logcat_only, bool verbose)
    : title_(title), logcat_only_(logcat_only), verbose_(verbose) {
    if (!title_.empty()) {
        started_ = Nanotime();
    }
@@ -2824,7 +2825,7 @@ DurationReporter::DurationReporter(const std::string& title, bool logcat_only)
DurationReporter::~DurationReporter() {
    if (!title_.empty()) {
        float elapsed = (float)(Nanotime() - started_) / NANOS_PER_SEC;
        if (elapsed < .5f) {
        if (elapsed < .5f && !verbose_) {
            return;
        }
        MYLOGD("Duration of '%s': %.2fs\n", title_.c_str(), elapsed);
@@ -3417,8 +3418,8 @@ int dump_file_from_fd(const char *title, const char *path, int fd) {
}

int Dumpstate::RunCommand(const std::string& title, const std::vector<std::string>& full_command,
                          const CommandOptions& options) {
    DurationReporter duration_reporter(title);
                          const CommandOptions& options, bool verbose_duration) {
    DurationReporter duration_reporter(title, false /* logcat_only */, verbose_duration);

    int status = RunCommandToFd(STDOUT_FILENO, title, full_command, options);

+5 −2
Original line number Diff line number Diff line
@@ -73,13 +73,15 @@ extern "C" {
 */
class DurationReporter {
  public:
    explicit DurationReporter(const std::string& title, bool logcat_only = false);
    explicit DurationReporter(const std::string& title, bool logcat_only = false,
                              bool verbose = false);

    ~DurationReporter();

  private:
    std::string title_;
    bool logcat_only_;
    bool verbose_;
    uint64_t started_;

    DISALLOW_COPY_AND_ASSIGN(DurationReporter);
@@ -224,7 +226,8 @@ class Dumpstate {
     */
    int RunCommand(const std::string& title, const std::vector<std::string>& fullCommand,
                   const android::os::dumpstate::CommandOptions& options =
                       android::os::dumpstate::CommandOptions::DEFAULT);
                       android::os::dumpstate::CommandOptions::DEFAULT,
                   bool verbose_duration = false);

    /*
     * Runs `dumpsys` with the given arguments, automatically setting its timeout