For some systems like Android, /tmp/ does not exist. Use the /data/ directory for message cache. With this, host guest tracing works on Android VM running on ChromeOS. Cc: Vineeth Pillai <vineethrp@xxxxxxxxxx> Signed-off-by: Joel Fernandes <joel@xxxxxxxxxxxxxxxxx> --- lib/trace-cmd/include/private/trace-cmd-private.h | 3 ++- lib/trace-cmd/trace-msg.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h index 6934376..492ad9c 100644 --- a/lib/trace-cmd/include/private/trace-cmd-private.h +++ b/lib/trace-cmd/include/private/trace-cmd-private.h @@ -377,7 +377,8 @@ enum tracecmd_msg_flags { }; /* for both client and server */ -#define MSG_CACHE_FILE "/tmp/trace_msg_cacheXXXXXX" +#define MSG_CACHE_FILE "/tmp/trace_msg_cacheXXXXXX" +#define MSG_CACHE_FILE2 "/data/trace_msg_cacheXXXXXX" struct tracecmd_msg_handle { int fd; short cpu_count; diff --git a/lib/trace-cmd/trace-msg.c b/lib/trace-cmd/trace-msg.c index 03b853e..91dac77 100644 --- a/lib/trace-cmd/trace-msg.c +++ b/lib/trace-cmd/trace-msg.c @@ -595,8 +595,14 @@ int tracecmd_msg_handle_cache(struct tracecmd_msg_handle *msg_handle) if (msg_handle->cfd < 0) { strcpy(msg_handle->cfile, MSG_CACHE_FILE); msg_handle->cfd = mkstemp(msg_handle->cfile); - if (msg_handle->cfd < 0) - return -1; + if (msg_handle->cfd < 0) { + /* Try an alternate path. */ + strcpy(msg_handle->cfile, MSG_CACHE_FILE2); + msg_handle->cfd = mkstemp(msg_handle->cfile); + if (msg_handle->cfd < 0) { + return -1; + } + } unlink(msg_handle->cfile); } msg_handle->cache = true; -- 2.35.1.1021.g381101b075-goog