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

Commit 2470b1b0 authored by Philip Cuadra's avatar Philip Cuadra Committed by android-build-merger
Browse files

Merge "Make BT HAL audio threads RT" into oc-dev

am: 240371c7

Change-Id: Ia0eaedaa08a6bed4ba555e18fcff3a22c5b57b63
parents c6985710 240371c7
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ cc_library_shared {
        "vendor_interface.cc",
    ],
    shared_libs: [
        "android.frameworks.schedulerservice@1.0",
        "android.hardware.bluetooth@1.0",
        "libbase",
        "libcutils",
@@ -48,6 +49,7 @@ cc_library_static {
    ],
    export_include_dirs: ["."],
    shared_libs: [
        "android.frameworks.schedulerservice@1.0",
        "liblog",
    ],
}
@@ -84,9 +86,11 @@ cc_test {
        "test",
    ],
    shared_libs: [
        "android.frameworks.schedulerservice@1.0",
        "libbase",
        "libhidlbase",
        "liblog",
        "libutils",
    ],
    static_libs: [
        "android.hardware.bluetooth-async",
+1 −0
Original line number Diff line number Diff line
@@ -35,5 +35,6 @@ LOCAL_SHARED_LIBRARIES += \
  libhidlbase \
  libhidltransport \
  android.hardware.bluetooth@1.0 \
  android.frameworks.schedulerservice@1.0\

include $(BUILD_EXECUTABLE)
+22 −0
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
// limitations under the License.
//

#define LOG_TAG "android.hardware.bluetooth@1.0-impl"

#include "async_fd_watcher.h"

#include <algorithm>
@@ -22,13 +24,18 @@
#include <map>
#include <mutex>
#include <thread>
#include <utils/Log.h>
#include <vector>
#include "fcntl.h"
#include "sys/select.h"
#include "unistd.h"

#include <android/frameworks/schedulerservice/1.0/ISchedulingPolicyService.h>

static const int INVALID_FD = -1;

static const int BT_RT_PRIORITY = 1;

namespace android {
namespace hardware {
namespace bluetooth {
@@ -112,6 +119,21 @@ int AsyncFdWatcher::notifyThread() {
}

void AsyncFdWatcher::ThreadRoutine() {
  using ::android::frameworks::schedulerservice::V1_0::ISchedulingPolicyService;
  using ::android::hardware::Return;
  sp<ISchedulingPolicyService> manager = ISchedulingPolicyService::getService();
  if (manager == nullptr) {
    ALOGE("%s: Couldn't get scheduler manager to set SCHED_FIFO.", __func__);
  } else {
    Return<bool> ret = manager->requestPriority(getpid(),
                                                gettid(),
                                                BT_RT_PRIORITY);
    if (!ret.isOk() || !ret) {
      ALOGE("%s unable to set SCHED_FIFO for pid %d, tid %d", __func__,
            getpid(), gettid());
    }
  }

  while (running_) {
    fd_set read_fds;
    FD_ZERO(&read_fds);