diff options
| -rw-r--r-- | services/schedulerservice/SchedulingPolicyService.cpp | 18 | ||||
| -rw-r--r-- | services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h | 3 |
2 files changed, 19 insertions, 2 deletions
diff --git a/services/schedulerservice/SchedulingPolicyService.cpp b/services/schedulerservice/SchedulingPolicyService.cpp index 522a8c0950..a1106cf49b 100644 --- a/services/schedulerservice/SchedulingPolicyService.cpp +++ b/services/schedulerservice/SchedulingPolicyService.cpp @@ -29,23 +29,37 @@ namespace schedulerservice { namespace V1_0 { namespace implementation { -Return<bool> SchedulingPolicyService::requestPriority(int32_t pid, int32_t tid, int32_t priority) { +bool SchedulingPolicyService::isAllowed() { using ::android::hardware::IPCThreadState; + return IPCThreadState::self()->getCallingUid() == AID_CAMERASERVER; +} + +Return<bool> SchedulingPolicyService::requestPriority(int32_t pid, int32_t tid, int32_t priority) { if (priority < static_cast<int32_t>(Priority::MIN) || priority > static_cast<int32_t>(Priority::MAX)) { return false; } - if (IPCThreadState::self()->getCallingUid() != AID_CAMERASERVER) { + if (!isAllowed()) { return false; } + // TODO(b/37226359): decouple from and remove AIDL service // this should always be allowed since we are in system_server. int value = ::android::requestPriority(pid, tid, priority, false /* isForApp */); return value == 0 /* success */; } +Return<int32_t> SchedulingPolicyService::getMaxAllowedPriority() { + if (!isAllowed()) { + return 0; + } + + // TODO(b/37226359): decouple from and remove AIDL service + return 3; +} + } // namespace implementation } // namespace V1_0 } // namespace schedulerservice diff --git a/services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h b/services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h index eb5a4aee9d..7d1c478ba7 100644 --- a/services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h +++ b/services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h @@ -38,6 +38,9 @@ using ::android::sp; struct SchedulingPolicyService : public ISchedulingPolicyService { Return<bool> requestPriority(int32_t pid, int32_t tid, int32_t priority) override; + Return<int32_t> getMaxAllowedPriority() override; +private: + bool isAllowed(); }; } // namespace implementation |