OSDN Git Service

schedulerservice: implement getMaxAllowedPriority
authorSteven Moreland <smoreland@google.com>
Tue, 11 Apr 2017 05:09:03 +0000 (22:09 -0700)
committerSteven Moreland <smoreland@google.com>
Tue, 11 Apr 2017 05:42:13 +0000 (05:42 +0000)
Test: SCHED_FIFO gets set on vendor marlin camera
Bug: 29251823
Change-Id: Ia6231651acb30620dd1655c8e65f3b380ec575d0

services/schedulerservice/SchedulingPolicyService.cpp
services/schedulerservice/include/schedulerservice/SchedulingPolicyService.h

index 522a8c0..a1106cf 100644 (file)
@@ -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
index eb5a4ae..7d1c478 100644 (file)
@@ -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