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

This commit is contained in:
Philip Cuadra 2017-04-26 16:52:00 +00:00 committed by Android (Google) Code Review
commit 240371c7b2
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);