summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ying Hsu <yinghsu@chromium.org> 2024-06-17 08:59:36 +0000
committer Ying Hsu <yinghsu@google.com> 2024-07-24 23:41:24 +0000
commita3606b32ed62598e2fe8759429fb703cebfd0598 (patch)
treee956bd6a18a761345bdfa158dcf772102c605c3f
parent2d4a0ddce887d8e7b3feb0c90811f0b7118a8f48 (diff)
floss: Add kBtSnoopLogModeKernel for btsnoop mode in kernel
Floss currently generates btsnoop logs in kernel space, so Capture and DumpSnoozLogToFile are not required. If we switch Floss to user space btsnoop logs, we may need to update umask and output file path to avoid permission errors. Bug: 327542410 Tag: #floss Test: btclient -c dumpsys Test: m com.android.btservices Flag: EXEMPT, floss only change Change-Id: I887c033d20b31b15d93362be25e5c35e79c43eb1
-rw-r--r--system/gd/hal/snoop_logger.cc6
-rw-r--r--system/gd/hal/snoop_logger.h1
-rw-r--r--system/gd/sysprops/sysprops_module.cc2
-rw-r--r--system/main/shim/stack.cc6
4 files changed, 11 insertions, 4 deletions
diff --git a/system/gd/hal/snoop_logger.cc b/system/gd/hal/snoop_logger.cc
index ee19c2c4ce..44cd8baaa4 100644
--- a/system/gd/hal/snoop_logger.cc
+++ b/system/gd/hal/snoop_logger.cc
@@ -446,6 +446,7 @@ const std::string SnoopLogger::kBtSnoopLogFilterProfileRfcommProperty =
const std::string SnoopLogger::kSoCManufacturerProperty = "ro.soc.manufacturer";
// persist.bluetooth.btsnooplogmode
+const std::string SnoopLogger::kBtSnoopLogModeKernel = "kernel";
const std::string SnoopLogger::kBtSnoopLogModeDisabled = "disabled";
const std::string SnoopLogger::kBtSnoopLogModeFiltered = "filtered";
const std::string SnoopLogger::kBtSnoopLogModeFull = "full";
@@ -1165,6 +1166,9 @@ void SnoopLogger::Capture(const HciPacket& immutable_packet, Direction direction
}
btsnooz_buffer_.Push(ss.str());
return;
+ } else if (btsnoop_mode_ == kBtSnoopLogModeKernel) {
+ // Skip logging as btsnoop is done in kernel space
+ return;
}
FilterCapturedPacket(packet, direction, type, length, header);
@@ -1250,7 +1254,7 @@ void SnoopLogger::ListDependencies(ModuleList* /* list */) const {
void SnoopLogger::Start() {
std::lock_guard<std::recursive_mutex> lock(file_mutex_);
- if (btsnoop_mode_ != kBtSnoopLogModeDisabled) {
+ if (btsnoop_mode_ != kBtSnoopLogModeDisabled && btsnoop_mode_ != kBtSnoopLogModeKernel) {
OpenNextSnoopLogFile();
if (btsnoop_mode_ == kBtSnoopLogModeFiltered) {
diff --git a/system/gd/hal/snoop_logger.h b/system/gd/hal/snoop_logger.h
index 1b03d1ab6a..656b3b1b36 100644
--- a/system/gd/hal/snoop_logger.h
+++ b/system/gd/hal/snoop_logger.h
@@ -155,6 +155,7 @@ public:
static const std::string kBtSnoopLogFilterProfileRfcommProperty;
static const std::string kSoCManufacturerProperty;
+ static const std::string kBtSnoopLogModeKernel;
static const std::string kBtSnoopLogModeDisabled;
static const std::string kBtSnoopLogModeFiltered;
static const std::string kBtSnoopLogModeFull;
diff --git a/system/gd/sysprops/sysprops_module.cc b/system/gd/sysprops/sysprops_module.cc
index 769843765a..7a69da6906 100644
--- a/system/gd/sysprops/sysprops_module.cc
+++ b/system/gd/sysprops/sysprops_module.cc
@@ -122,6 +122,8 @@ void SyspropsModule::parse_config(std::string file_path) {
// Profile
"bluetooth.hid.wait_ms_after_uhid_open",
"persist.bluetooth.avrcpcontrolversion",
+ // btsnoop logger
+ "persist.bluetooth.btsnooplogmode",
};
auto config = storage::LegacyConfigFile::FromPath(file_path).Read(kDefaultCapacity);
diff --git a/system/main/shim/stack.cc b/system/main/shim/stack.cc
index 344cc1aab4..77c04d97d2 100644
--- a/system/main/shim/stack.cc
+++ b/system/main/shim/stack.cc
@@ -74,14 +74,14 @@ void Stack::StartEverything() {
log::info("Starting Gd stack");
ModuleList modules;
+#if TARGET_FLOSS
+ modules.add<sysprops::SyspropsModule>();
+#endif
modules.add<metrics::CounterMetrics>();
modules.add<hal::HciHal>();
modules.add<hci::HciLayer>();
modules.add<storage::StorageModule>();
modules.add<shim::Dumpsys>();
-#if TARGET_FLOSS
- modules.add<sysprops::SyspropsModule>();
-#endif
modules.add<hci::Controller>();
modules.add<hci::acl_manager::AclScheduler>();