summaryrefslogtreecommitdiff
path: root/dumpstate/DumpstateDevice.cpp
diff options
context:
space:
mode:
authorEcco Park <eccopark@google.com>2017-01-31 18:02:52 -0800
committerEcco Park <eccopark@google.com>2017-02-01 17:03:10 -0800
commit3399e5d7bbc6036c8e19eb82dd967596eac71f01 (patch)
treef09092b70f32e2af8bcc6eac5d7371aa006c693e /dumpstate/DumpstateDevice.cpp
parent426faea4e7d55be4c49335a3d8de58871c867172 (diff)
downloadmarlin-3399e5d7bbc6036c8e19eb82dd967596eac71f01.tar.gz
Dumpstate: Fix selinux permission error for hal_dumpstate_impl
Dumpstate for marlin has been broken since hidlization because of selinux permission For modem log, create the property(ro.radio.log_loc) so that dumpstate refer this prop to read the modem logs. Test: 1) generated dumpstate-board.txt without any permission error 2) modem sim is detected properly Bug: 31982882 Fixes: 34076823 Fixes: 34831632 Change-Id: Id2f2700ea0e138274726f9ec142747fb02fa28a8 Signed-off-by: Ecco Park <eccopark@google.com>
Diffstat (limited to 'dumpstate/DumpstateDevice.cpp')
-rwxr-xr-xdumpstate/DumpstateDevice.cpp35
1 files changed, 16 insertions, 19 deletions
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index b3323a7d..18be72cd 100755
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -28,6 +28,7 @@
#include "DumpstateUtil.h"
#define MODEM_LOG_PREFIX_PROPERTY "ro.radio.log_prefix"
+#define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc"
#define MODEM_LOGGING_SWITCH "persist.radio.smlog_switch"
using android::os::dumpstate::CommandOptions;
@@ -46,33 +47,30 @@ namespace {
static void getModemLogs(int fd)
{
bool modemLogsEnabled = 0;
-
+ std::string modemLogDir = android::base::GetProperty(MODEM_LOG_LOC_PROPERTY, "");
+ if (modemLogDir.empty()) {
+ ALOGD("No modem log place is set\n");
+ return;
+ }
/* Check if smlog_dump tool exist */
- if (!PropertiesHelper::IsUserBuild() && !access("/system/bin/smlog_dump", F_OK)) {
+ if (!PropertiesHelper::IsUserBuild() && !access("/system/bin/smlog_dump", X_OK)) {
modemLogsEnabled = android::base::GetBoolProperty(MODEM_LOGGING_SWITCH, false);
/* Execute SMLOG DUMP if SMLOG is enabled */
if (modemLogsEnabled) {
- // TODO: uses a temporary path instead
- std::string bugreportDir = "/bugreports";
- CommandOptions options = CommandOptions::WithTimeout(120).AsRoot().Build();
- RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", bugreportDir.c_str() }, options);
-
+ CommandOptions options = CommandOptions::WithTimeout(120).Build();
+ RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", modemLogDir.c_str() }, options);
// Remove smlog folders older than 10 days.
std::string filePrefix = android::base::GetProperty(MODEM_LOG_PREFIX_PROPERTY, "");
if (!filePrefix.empty()) {
std::string removeCommand = "/system/bin/find " +
- bugreportDir + "/" + filePrefix + "* -mtime +10 -delete";
+ modemLogDir + "/" + filePrefix + "* -mtime +10 -delete";
RunCommandToFd(fd, "RM OLD SMLOG",
- { "/system/bin/sh", "-c", removeCommand.c_str()},
- CommandOptions::AS_ROOT);
+ { "/system/bin/sh", "-c", removeCommand.c_str() });
}
}
- RunCommandToFd(fd, "RM OLD SMLOG",
- { "/system/bin/sh", "-c", "/system/bin/find /data/smlog_* -delete" },
- CommandOptions::AS_ROOT);
}
}
@@ -98,18 +96,17 @@ Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle& handle) {
DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats");
DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats");
DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");
- RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}, CommandOptions::AS_ROOT);
+ RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"});
DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo");
- RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}, CommandOptions::AS_ROOT);
+ RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"});
DumpFileToFd(fd, "cpu0-1 time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
- RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+ RunCommandToFd(fd, "cpu0-1 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
DumpFileToFd(fd, "cpu2-3 time-in-state", "/sys/devices/system/cpu/cpu2/cpufreq/stats/time_in_state");
- RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+ RunCommandToFd(fd, "cpu2-3 cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu2/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"});
DumpFileToFd(fd, "MDP xlogs", "/d/mdp/xlog/dump");
- RunCommandToFd(fd, "RAMDUMP LIST", {"/system/bin/sh", "-c", "cat /data/data/com.android.ramdump/files/RAMDUMP_LIST"}, CommandOptions::AS_ROOT);
/* Check if qsee_logger tool exists */
- if (!access("/system/bin/qsee_logger", F_OK)) {
+ if (!access("/system/bin/qsee_logger", X_OK)) {
RunCommandToFd(fd, "FP LOGS", {"qsee_logger", "-d"});
}