diff options
author | 2020-03-30 15:58:06 +0800 | |
---|---|---|
committer | 2020-05-07 21:05:43 +0800 | |
commit | b12941cf9b1e3c3456eb44a19927570d99ba108d (patch) | |
tree | 979ac13b01ff4d0ddb5ac6bfd7904a546912f1dd | |
parent | 61086af8434ff216f6cda008722e928f1c6bffa4 (diff) |
Add setSchedPolicyCgroup to AM binder
Add setSchedPolicyCgroup function to native Activity Manager binder
interface.
Bug: 139521784
Test: function works
Change-Id: Icc89e0c4d33993d2ccb80f5d63efb9f6fdd5ba40
-rw-r--r-- | libs/binder/ActivityManager.cpp | 9 | ||||
-rw-r--r-- | libs/binder/IActivityManager.cpp | 11 | ||||
-rw-r--r-- | libs/binder/include/binder/ActivityManager.h | 2 | ||||
-rw-r--r-- | libs/binder/include/binder/IActivityManager.h | 4 |
4 files changed, 24 insertions, 2 deletions
diff --git a/libs/binder/ActivityManager.cpp b/libs/binder/ActivityManager.cpp index 5e4c98fc7a..d005058abe 100644 --- a/libs/binder/ActivityManager.cpp +++ b/libs/binder/ActivityManager.cpp @@ -98,6 +98,15 @@ int32_t ActivityManager::getUidProcessState(const uid_t uid, const String16& cal return PROCESS_STATE_UNKNOWN; } +bool ActivityManager::setSchedPolicyCgroup(const int32_t tid, const int32_t group) +{ + sp<IActivityManager> service = getService(); + if (service != nullptr) { + return service->setSchedPolicyCgroup(tid, group); + } + return false; +} + status_t ActivityManager::linkToDeath(const sp<IBinder::DeathRecipient>& recipient) { sp<IActivityManager> service = getService(); if (service != nullptr) { diff --git a/libs/binder/IActivityManager.cpp b/libs/binder/IActivityManager.cpp index 1eb5363ae2..a30211225d 100644 --- a/libs/binder/IActivityManager.cpp +++ b/libs/binder/IActivityManager.cpp @@ -104,6 +104,17 @@ public: } return reply.readInt32(); } + + virtual bool setSchedPolicyCgroup(const int32_t tid, const int32_t group) + { + Parcel data, reply; + data.writeInterfaceToken(IActivityManager::getInterfaceDescriptor()); + data.writeInt32(tid); + data.writeInt32(group); + remote()->transact(SET_SCHED_POLICY_CGROUP_TRANSACTION, data, &reply); + if (reply.readExceptionCode() != 0) return false; + return reply.readBool(); + } }; // ------------------------------------------------------------------------------------ diff --git a/libs/binder/include/binder/ActivityManager.h b/libs/binder/include/binder/ActivityManager.h index 9108e31758..7043b17b53 100644 --- a/libs/binder/include/binder/ActivityManager.h +++ b/libs/binder/include/binder/ActivityManager.h @@ -77,7 +77,7 @@ public: void unregisterUidObserver(const sp<IUidObserver>& observer); bool isUidActive(const uid_t uid, const String16& callingPackage); int getUidProcessState(const uid_t uid, const String16& callingPackage); - + bool setSchedPolicyCgroup(const int32_t tid, const int32_t group); status_t linkToDeath(const sp<IBinder::DeathRecipient>& recipient); status_t unlinkToDeath(const sp<IBinder::DeathRecipient>& recipient); diff --git a/libs/binder/include/binder/IActivityManager.h b/libs/binder/include/binder/IActivityManager.h index e0248f6624..fe58a41546 100644 --- a/libs/binder/include/binder/IActivityManager.h +++ b/libs/binder/include/binder/IActivityManager.h @@ -39,13 +39,15 @@ public: virtual void unregisterUidObserver(const sp<IUidObserver>& observer) = 0; virtual bool isUidActive(const uid_t uid, const String16& callingPackage) = 0; virtual int32_t getUidProcessState(const uid_t uid, const String16& callingPackage) = 0; + virtual bool setSchedPolicyCgroup(const int32_t tid, const int32_t group) = 0; enum { OPEN_CONTENT_URI_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, REGISTER_UID_OBSERVER_TRANSACTION, UNREGISTER_UID_OBSERVER_TRANSACTION, IS_UID_ACTIVE_TRANSACTION, - GET_UID_PROCESS_STATE_TRANSACTION + GET_UID_PROCESS_STATE_TRANSACTION, + SET_SCHED_POLICY_CGROUP_TRANSACTION }; }; |