mirror of
https://github.com/Evolution-X-Devices/device_google_wahoo
synced 2026-02-01 03:40:35 +00:00
Adding init script and SELinux support for qlogd
Bug: 37115787 Change-Id: I64988953513cd0a7c2e861b5cad5fa6c1c7b9557
This commit is contained in:
@@ -31,6 +31,9 @@
|
||||
#define MODEM_LOG_LOC_PROPERTY "ro.radio.log_loc"
|
||||
#define MODEM_LOGGING_SWITCH "persist.radio.smlog_switch"
|
||||
|
||||
#define DIAG_MDLOG_PROPERTY "persist.sys.modem.diag.mdlog"
|
||||
#define DIAG_MDLOG_STATUS_PROPERTY "sys.modem.diag.mdlog"
|
||||
|
||||
using android::os::dumpstate::CommandOptions;
|
||||
using android::os::dumpstate::DumpFileToFd;
|
||||
using android::os::dumpstate::PropertiesHelper;
|
||||
@@ -56,9 +59,11 @@ static void getModemLogs(int fd)
|
||||
bool smlogEnabled = android::base::GetBoolProperty(MODEM_LOGGING_SWITCH, false) &&
|
||||
!access("/vendor/bin/smlog_dump", X_OK);
|
||||
|
||||
bool diagLogEnabled = android::base::GetBoolProperty(DIAG_MDLOG_PROPERTY, false);
|
||||
|
||||
CommandOptions options = CommandOptions::WithTimeout(120).Build();
|
||||
std::string modemLogAllDir = modemLogDir + "/modem_log";
|
||||
std::string alwaysOnLogs = "/data/vendor/radio/diag_logs/always_on";
|
||||
std::string diagLogDir = "/data/vendor/radio/diag_logs/logs";
|
||||
std::vector<std::string> rilAndNetmgrLogs
|
||||
{
|
||||
"/data/misc/radio/ril_log",
|
||||
@@ -72,9 +77,24 @@ static void getModemLogs(int fd)
|
||||
|
||||
if (smlogEnabled) {
|
||||
RunCommandToFd(fd, "SMLOG DUMP", { "smlog_dump", "-d", "-o", modemLogAllDir.c_str() }, options);
|
||||
} else {
|
||||
std::string copyCmd= "/system/bin/cp -rf " + alwaysOnLogs + " " + modemLogAllDir;
|
||||
RunCommandToFd(fd, "CP ALWAYS ON LOGS", { "/system/bin/sh", "-c", copyCmd.c_str()}, options);
|
||||
} else if (diagLogEnabled) {
|
||||
std::string copyCmd= "/system/bin/cp -rf " + diagLogDir + " " + modemLogAllDir;
|
||||
|
||||
android::base::SetProperty(DIAG_MDLOG_PROPERTY, "false");
|
||||
|
||||
ALOGD("Waiting for diag log to exit\n");
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (!android::base::GetBoolProperty(DIAG_MDLOG_STATUS_PROPERTY, false)) {
|
||||
ALOGD("diag log exited\n");
|
||||
break;
|
||||
}
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
RunCommandToFd(fd, "CP DIAG LOGS", { "/system/bin/sh", "-c", copyCmd.c_str()}, options);
|
||||
|
||||
android::base::SetProperty(DIAG_MDLOG_PROPERTY, "true");
|
||||
}
|
||||
|
||||
for (const auto& logFile : rilAndNetmgrLogs)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
on post-fs-data
|
||||
# Modem logging collection
|
||||
mkdir /data/vendor/radio 0775 radio radio
|
||||
mkdir /data/vendor/radio 0777 radio radio
|
||||
mkdir /data/vendor/radio/diag_logs 0777 system system
|
||||
# WLAN logging collection
|
||||
mkdir /data/vendor/wifi 0777 system system
|
||||
@@ -333,6 +333,26 @@ on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,adb,serial_cdev
|
||||
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
|
||||
setprop sys.usb.state ${sys.usb.config}
|
||||
|
||||
service diag_mdlog_start /vendor/bin/diag_mdlog
|
||||
class late_start
|
||||
user shell
|
||||
group system diag media_rw
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
service diag_mdlog_stop /vendor/bin/diag_mdlog -k
|
||||
class late_start
|
||||
user shell
|
||||
group system diag media_rw
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
on property:persist.sys.modem.diag.mdlog=true
|
||||
start diag_mdlog_start
|
||||
|
||||
on property:persist.sys.modem.diag.mdlog=false
|
||||
start diag_mdlog_stop
|
||||
|
||||
on property:persist.sys.cnss.diag_qxdm=true
|
||||
start cnss_diag
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ userdebug_or_eng(`
|
||||
allow hal_dumpstate_impl radio_data_file:file r_file_perms;
|
||||
allow hal_dumpstate_impl radio_vendor_data_file:file r_file_perms;
|
||||
allow hal_dumpstate_impl netmgr_data_file:file r_file_perms;
|
||||
|
||||
set_prop(hal_dumpstate_impl, modem_diag_prop)
|
||||
')
|
||||
|
||||
allow hal_dumpstate_impl uio_device:chr_file rw_file_perms;
|
||||
|
||||
@@ -15,5 +15,7 @@ userdebug_or_eng(`
|
||||
|
||||
allow logger_app cnss_vendor_data_file:dir create_dir_perms;
|
||||
allow logger_app cnss_vendor_data_file:file create_file_perms;
|
||||
set_prop(logger_app, cnss_diag_prop);
|
||||
|
||||
set_prop(logger_app, cnss_diag_prop)
|
||||
set_prop(logger_app, modem_diag_prop)
|
||||
')
|
||||
|
||||
@@ -9,3 +9,4 @@ type cnss_diag_prop, property_type;
|
||||
type tee_listener_prop, property_type;
|
||||
type wc_prop, property_type;
|
||||
type thermal_prop, property_type;
|
||||
type modem_diag_prop, property_type;
|
||||
|
||||
@@ -13,3 +13,5 @@ sys.listeners.registered u:object_r:tee_listener_prop:s0
|
||||
wc_transport. u:object_r:wc_prop:s0
|
||||
sys.qcom.thermalcfg u:object_r:thermal_prop:s0
|
||||
ctl.thermal-engine u:object_r:thermal_prop:s0
|
||||
persist.sys.modem.diag. u:object_r:modem_diag_prop:s0
|
||||
sys.modem.diag. u:object_r:modem_diag_prop:s0
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
type qlogd, domain;
|
||||
type qlogd_exec, exec_type, vendor_file_type, file_type;
|
||||
|
||||
# TODO(b/37115787): Add permissions when diag_mdlog is moved to qlogd domain
|
||||
userdebug_or_eng(`
|
||||
# make transition from init to its domain
|
||||
init_daemon_domain(qlogd)
|
||||
|
||||
allow qlogd diag_device:chr_file rw_file_perms;
|
||||
allow qlogd qlogd_exec:file rx_file_perms;
|
||||
|
||||
allow qlogd radio_vendor_data_file:file create_file_perms;
|
||||
allow qlogd radio_vendor_data_file:dir create_dir_perms;
|
||||
|
||||
set_prop(qlogd, modem_diag_prop)
|
||||
')
|
||||
Reference in New Issue
Block a user