"vendor_interface.cc",
],
shared_libs: [
- "android.frameworks.schedulerservice@1.0",
"android.hardware.bluetooth@1.0",
"libbase",
"libcutils",
],
export_include_dirs: ["."],
shared_libs: [
- "android.frameworks.schedulerservice@1.0",
"liblog",
],
}
"test",
],
shared_libs: [
- "android.frameworks.schedulerservice@1.0",
"libbase",
"libhidlbase",
"liblog",
#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;
}
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());
- }
+ // Make watching thread RT.
+ struct sched_param rt_params;
+ rt_params.sched_priority = BT_RT_PRIORITY;
+ if (sched_setscheduler(gettid(), SCHED_FIFO, &rt_params)) {
+ ALOGE("%s unable to set SCHED_FIFO for pid %d, tid %d, error %s", __func__,
+ getpid(), gettid(), strerror(errno));
}
while (running_) {
#include <hidl/LegacySupport.h>
-// Add an extra thread for calls to the scheduler service.
-static const size_t kMaxThreads = 2;
+// Extra threads make priority inheritance faster.
+static const size_t kMaxThreads = 5;
// Generated HIDL files
using android::hardware::bluetooth::V1_0::IBluetoothHci;