summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-18 21:24:56 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-18 21:24:56 +0000
commit5c32ae4df8979c78e50d9ac84a35e566c9aa3117 (patch)
tree85193daeffada2888a97af8edcb4fca64518e104
parent9d30130325d73b909a058db9d9c643ee113dc8fd (diff)
parentd0ac12978722d3f01efec16eb81fc3a149448f1c (diff)
downloadextras-5c32ae4df8979c78e50d9ac84a35e566c9aa3117.tar.gz
Merge "simpleperf: pass log option to cmd running in app context." am: e35ebc47e0 am: a8f7c4ad1a am: d0ac129787
Change-Id: I807b0b4d8a45f5f0e77370b45be3e166ad618bd1
-rw-r--r--simpleperf/command.cpp8
-rw-r--r--simpleperf/command.h4
-rw-r--r--simpleperf/environment.cpp6
-rw-r--r--simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp1
4 files changed, 19 insertions, 0 deletions
diff --git a/simpleperf/command.cpp b/simpleperf/command.cpp
index e937e19b..d00fc224 100644
--- a/simpleperf/command.cpp
+++ b/simpleperf/command.cpp
@@ -27,6 +27,8 @@
#include "utils.h"
+using namespace simpleperf;
+
bool Command::NextArgumentOrError(const std::vector<std::string>& args, size_t* pi) {
if (*pi + 1 == args.size()) {
LOG(ERROR) << "No argument following " << args[*pi] << " option. Try `simpleperf help " << name_
@@ -129,10 +131,15 @@ static void StderrLogger(android::base::LogId, android::base::LogSeverity severi
fprintf(stderr, "simpleperf %c %s:%u] %s\n", severity_char, file, line, message);
}
+namespace simpleperf {
+bool log_to_android_buffer = false;
+}
+
bool RunSimpleperfCmd(int argc, char** argv) {
android::base::InitLogging(argv, StderrLogger);
std::vector<std::string> args;
android::base::LogSeverity log_severity = android::base::INFO;
+ log_to_android_buffer = false;
for (int i = 1; i < argc; ++i) {
if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
@@ -151,6 +158,7 @@ bool RunSimpleperfCmd(int argc, char** argv) {
#if defined(__ANDROID__)
} else if (strcmp(argv[i], "--log-to-android-buffer") == 0) {
android::base::SetLogger(android::base::LogdLogger());
+ log_to_android_buffer = true;
#endif
} else if (strcmp(argv[i], "--version") == 0) {
LOG(INFO) << "Simpleperf version " << GetSimpleperfVersion();
diff --git a/simpleperf/command.h b/simpleperf/command.h
index 2ce789e4..fe71a31a 100644
--- a/simpleperf/command.h
+++ b/simpleperf/command.h
@@ -88,4 +88,8 @@ std::unique_ptr<Command> CreateCommandInstance(const std::string& cmd_name);
const std::vector<std::string> GetAllCommandNames();
bool RunSimpleperfCmd(int argc, char** argv);
+namespace simpleperf {
+extern bool log_to_android_buffer;
+}
+
#endif // SIMPLE_PERF_COMMAND_H_
diff --git a/simpleperf/environment.cpp b/simpleperf/environment.cpp
index e5be3026..29e43ac2 100644
--- a/simpleperf/environment.cpp
+++ b/simpleperf/environment.cpp
@@ -41,6 +41,7 @@
#include <android-base/properties.h>
#endif
+#include "command.h"
#include "event_type.h"
#include "IOEventLoop.h"
#include "read_elf.h"
@@ -48,6 +49,8 @@
#include "utils.h"
#include "workload.h"
+using namespace simpleperf;
+
class LineReader {
public:
explicit LineReader(FILE* fp) : fp_(fp), buf_(nullptr), bufsize_(0) {
@@ -626,6 +629,9 @@ bool InAppRunner::RunCmdInApp(const std::string& cmd, const std::vector<std::str
// 1. Build cmd args running in app's context.
std::vector<std::string> args = GetPrefixArgs(cmd);
args.insert(args.end(), {"--in-app", "--log", GetLogSeverityName()});
+ if (log_to_android_buffer) {
+ args.emplace_back("--log-to-android-buffer");
+ }
if (need_tracepoint_events) {
// Since we can't read tracepoint events from tracefs in app's context, we need to prepare
// them in tracepoint_file in shell's context, and pass the path of tracepoint_file to the
diff --git a/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp b/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp
index aeddee9e..9aec41f0 100644
--- a/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp
+++ b/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp
@@ -104,6 +104,7 @@ static void CheckSimpleperfArguments(const char* cmdname, char** args) {
}
std::set<std::string> zero_arg_options = {
"-b", "--csv", "--exit-with-parent", "-g", "--in-app", "--interval-only-values",
+ "--log-to-android-buffer",
"--no-callchain-joiner", "--no-dump-kernel-symbols", "--no-dump-symbols", "--no-inherit",
"--post-unwind=no", "--post-unwind=yes", "--trace-offcpu", "--verbose",
};