Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24cc6949 authored by Chris Manton's avatar Chris Manton
Browse files

Add ability to lock stack for dumpsys

Bug: 216499488
Tag: #refactor
Test: gd/cert/run

Change-Id: Ie84b52cbf52481eaa46d41945f1a385e3658c81a
parent 7852bafd
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -16,12 +16,13 @@

#define LOG_TAG "bt_shim_storage"

#include "main/shim/dumpsys.h"

#include <unordered_map>

#include "main/shim/dumpsys.h"
#include "main/shim/entry.h"
#include "main/shim/shim.h"

#include "main/shim/stack.h"
#include "shim/dumpsys.h"

namespace {
@@ -53,6 +54,7 @@ void bluetooth::shim::Dump(int fd, const char** args) {
      dumpsys.second(fd);
    }
  }
  bluetooth::shim::Stack::GetInstance()->LockForDumpsys([=]() {
    if (bluetooth::shim::is_gd_stack_started_up()) {
      if (bluetooth::shim::is_gd_dumpsys_module_started()) {
        bluetooth::shim::GetDumpsys()->Dump(fd, args);
@@ -63,4 +65,5 @@ void bluetooth::shim::Dump(int fd, const char** args) {
    } else {
      dprintf(fd, "%s gd stack is enabled but not started\n", kModuleName);
    }
  });
}
+5 −0
Original line number Diff line number Diff line
@@ -317,5 +317,10 @@ bool Stack::IsDumpsysModuleStarted() const {
  return GetStackManager()->IsStarted<Dumpsys>();
}

void Stack::LockForDumpsys(std::function<void()> dumpsys_callback) {
  std::lock_guard<std::recursive_mutex> lock(mutex_);
  dumpsys_callback();
}

}  // namespace shim
}  // namespace bluetooth
+6 −4
Original line number Diff line number Diff line
@@ -16,17 +16,17 @@

#pragma once

#include <functional>
#include <mutex>

#include "main/shim/acl.h"
#include "main/shim/btm.h"
#include "main/shim/link_policy_interface.h"

#include "gd/module.h"
#include "gd/os/handler.h"
#include "gd/os/thread.h"
#include "gd/os/utils.h"
#include "gd/stack_manager.h"
#include "main/shim/acl.h"
#include "main/shim/btm.h"
#include "main/shim/link_policy_interface.h"
#include "src/bridge.rs.h"

// The shim layer implementation on the Gd stack side.
@@ -67,6 +67,8 @@ class Stack {
    return rust_controller_;
  }

  void LockForDumpsys(std::function<void()> dumpsys_callback);

 private:
  mutable std::recursive_mutex mutex_;
  StackManager stack_manager_;