aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalesh Singh <kaleshsingh@google.com>2022-11-22 16:36:18 -0800
committerKalesh Singh <kaleshsingh@google.com>2022-11-22 17:04:06 -0800
commit551fa0b8cdaf6de75df573bae47f3761da85c22b (patch)
treec7cfceadc2ddfc15903d89b85bfff75efb36b4f2
parent0f84879a0b2567c33aedf88985428c2ec4828640 (diff)
downloadtrace-cmd-551fa0b8cdaf6de75df573bae47f3761da85c22b.tar.gz
ANDROID: tracecmd: Fix temp file paths
Android doesn't mount /tmp. Fixup the temp file paths to /data/local/tmp/ if this is an Android build. This is needed for tracing VMs to work correctly. Bug: 223905587 Test: guest$ trace-cmd agent Test: host$ trace-cmd record -e sched:* -A microdroid@24:823 -e sched:* Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: Ie690c33feb29ae9931fc3c3e1a4656c4645faf90
-rw-r--r--lib/trace-cmd/include/private/trace-cmd-private.h5
-rw-r--r--lib/trace-cmd/trace-input.c10
-rw-r--r--tracecmd/trace-setup-guest.c5
3 files changed, 20 insertions, 0 deletions
diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h
index 766e0a76..3cc3e9dd 100644
--- a/lib/trace-cmd/include/private/trace-cmd-private.h
+++ b/lib/trace-cmd/include/private/trace-cmd-private.h
@@ -381,7 +381,12 @@ enum tracecmd_msg_flags {
};
/* for both client and server */
+#ifdef __ANDROID__
+#define MSG_CACHE_FILE "/data/local/tmp/trace_msg_cacheXXXXXX"
+#else /* !__ANDROID__ */
#define MSG_CACHE_FILE "/tmp/trace_msg_cacheXXXXXX"
+#endif /* __ANDROID__ */
+
struct tracecmd_msg_handle {
int fd;
short cpu_count;
diff --git a/lib/trace-cmd/trace-input.c b/lib/trace-cmd/trace-input.c
index 442b1c5a..8ffdf04b 100644
--- a/lib/trace-cmd/trace-input.c
+++ b/lib/trace-cmd/trace-input.c
@@ -67,14 +67,24 @@ struct zchunk_cache {
struct cpu_zdata {
/* uncompressed cpu data */
int fd;
+#ifdef __ANDROID__
+ char file[37]; /* strlen(COMPR_TEMP_FILE) */
+#else /* !__ANDROID__ */
char file[26]; /* strlen(COMPR_TEMP_FILE) */
+#endif /* __ANDROID__ */
+
unsigned int count;
unsigned int last_chunk;
struct list_head cache;
struct tracecmd_compress_chunk *chunks;
};
+#ifdef __ANDROID__
+#define COMPR_TEMP_FILE "/data/local/tmp/trace_cpu_dataXXXXXX"
+#else /* !__ANDROID__ */
#define COMPR_TEMP_FILE "/tmp/trace_cpu_dataXXXXXX"
+#endif /* __ANDROID__ */
+
struct cpu_data {
/* the first two never change */
unsigned long long file_offset;
diff --git a/tracecmd/trace-setup-guest.c b/tracecmd/trace-setup-guest.c
index 899848cb..f20b48e2 100644
--- a/tracecmd/trace-setup-guest.c
+++ b/tracecmd/trace-setup-guest.c
@@ -124,7 +124,12 @@ static int attach_guest_fifos(const char *guest, int nr_cpus)
char cmd[PATH_MAX], xml[PATH_MAX];
int i, fd, ret = 0;
+#ifdef __ANDROID__
+ strcpy(tmp_path, "/data/local/tmp/pipexmlXXXXXX");
+#else /* !__ANDROID__ */
strcpy(tmp_path, "/tmp/pipexmlXXXXXX");
+#endif /* __ANDROID__ */
+
fd = mkstemp(tmp_path);
if (fd < 0)
return fd;