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

am: 240371c7b2

Change-Id: Ia0eaedaa08a6bed4ba555e18fcff3a22c5b57b63
This commit is contained in:
Philip Cuadra
2017-04-26 17:07:13 +00:00
committed by android-build-merger
3 changed files with 27 additions and 0 deletions

View File

@@ -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",

View File

@@ -35,5 +35,6 @@ LOCAL_SHARED_LIBRARIES += \
libhidlbase \
libhidltransport \
android.hardware.bluetooth@1.0 \
android.frameworks.schedulerservice@1.0\
include $(BUILD_EXECUTABLE)

View File

@@ -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);