diff options
-rw-r--r-- | core/java/android/os/Process.java | 16 | ||||
-rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 6 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 5 |
3 files changed, 19 insertions, 8 deletions
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 333c7cb..1214abc 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -573,7 +573,21 @@ public class Process { * directly to a gid. */ public static final native int getGidForName(String name); - + + /** + * Returns a uid for a currently running process. + * @param pid the process id + * @return the uid of the process, or -1 if the process is not running. + * @hide pending API council review + */ + public static final int getUidForPid(int pid) { + String[] procStatusLabels = { "Uid:" }; + long[] procStatusValues = new long[1]; + procStatusValues[0] = -1; + Process.readProcLines("/proc/" + pid + "/status", procStatusLabels, procStatusValues); + return (int) procStatusValues[0]; + } + /** * Set the priority of a thread, based on Linux priorities. * diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index fc4a9c4..a03802d 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -2836,14 +2836,12 @@ public final class BatteryStatsImpl extends BatteryStats { * @param name process name * @return the statistics object for the process */ - public Uid.Proc getProcessStatsLocked(String name) { + public Uid.Proc getProcessStatsLocked(String name, int pid) { int uid; if (mUidCache.containsKey(name)) { uid = mUidCache.get(name); } else { - // TODO: Find the actual uid from /proc/pid/status. For now use the hashcode of the - // process name - uid = name.hashCode(); + uid = Process.getUidForPid(pid); mUidCache.put(name, uid); } Uid u = getUidStatsLocked(uid); diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 0d9d2b0..fd1dfc8 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1518,8 +1518,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } - final BatteryStatsImpl bstats = - (BatteryStatsImpl) mBatteryStatsService.getActiveStatistics(); + final BatteryStatsImpl bstats = mBatteryStatsService.getActiveStatistics(); synchronized(bstats) { synchronized(mPidsSelfLocked) { if (haveNewCpuStats) { @@ -1534,7 +1533,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen ps.addCpuTimeLocked(st.rel_utime, st.rel_stime); } else { BatteryStatsImpl.Uid.Proc ps = - bstats.getProcessStatsLocked(st.name); + bstats.getProcessStatsLocked(st.name, st.pid); if (ps != null) { ps.addCpuTimeLocked(st.rel_utime, st.rel_stime); } |