summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2013-10-02 12:42:20 -0700
committerMarco Nelissen <marcone@google.com>2013-10-03 08:49:07 -0700
commit9a7706bb174cdac279908f705191803dc5bfa0ab (patch)
tree0fed42f56aefb237d6d561a80c510e80480b984f
parent86206b41b2ff000e086301c6bafb8da577e563b2 (diff)
downloadframeworks_native-9a7706bb174cdac279908f705191803dc5bfa0ab.zip
frameworks_native-9a7706bb174cdac279908f705191803dc5bfa0ab.tar.gz
frameworks_native-9a7706bb174cdac279908f705191803dc5bfa0ab.tar.bz2
Allow blaming a single uid for work done
This lets audioflinger assign blame for wakelocks to a single uid. Currently this is only used for recording wakelocks. b/10985160 Change-Id: Idc9adb22c29030010ac690d4cb95e7e7ea6b91e6
-rw-r--r--include/powermanager/IPowerManager.h2
-rw-r--r--services/powermanager/IPowerManager.cpp17
2 files changed, 18 insertions, 1 deletions
diff --git a/include/powermanager/IPowerManager.h b/include/powermanager/IPowerManager.h
index e21e6a8..2f4c3c4 100644
--- a/include/powermanager/IPowerManager.h
+++ b/include/powermanager/IPowerManager.h
@@ -32,6 +32,8 @@ public:
virtual status_t acquireWakeLock(int flags, const sp<IBinder>& lock, const String16& tag,
const String16& packageName) = 0;
+ virtual status_t acquireWakeLockWithUid(int flags, const sp<IBinder>& lock, const String16& tag,
+ const String16& packageName, int uid) = 0;
virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags) = 0;
};
diff --git a/services/powermanager/IPowerManager.cpp b/services/powermanager/IPowerManager.cpp
index 3f5b81e..9f60e75 100644
--- a/services/powermanager/IPowerManager.cpp
+++ b/services/powermanager/IPowerManager.cpp
@@ -30,7 +30,8 @@ namespace android {
// must be kept in sync with IPowerManager.aidl
enum {
ACQUIRE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION,
- RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 1,
+ ACQUIRE_WAKE_LOCK_UID = IBinder::FIRST_CALL_TRANSACTION + 1,
+ RELEASE_WAKE_LOCK = IBinder::FIRST_CALL_TRANSACTION + 2,
};
class BpPowerManager : public BpInterface<IPowerManager>
@@ -55,6 +56,20 @@ public:
return remote()->transact(ACQUIRE_WAKE_LOCK, data, &reply);
}
+ virtual status_t acquireWakeLockWithUid(int flags, const sp<IBinder>& lock, const String16& tag,
+ const String16& packageName, int uid)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IPowerManager::getInterfaceDescriptor());
+
+ data.writeStrongBinder(lock);
+ data.writeInt32(flags);
+ data.writeString16(tag);
+ data.writeString16(packageName);
+ data.writeInt32(uid); // uid to blame for the work
+ return remote()->transact(ACQUIRE_WAKE_LOCK_UID, data, &reply);
+ }
+
virtual status_t releaseWakeLock(const sp<IBinder>& lock, int flags)
{
Parcel data, reply;