From 48b908bd77abe10880747ebc10659027adc772f4 Mon Sep 17 00:00:00 2001 From: Ahmed ElArabawy Date: Tue, 16 May 2017 21:46:36 +0000 Subject: [PATCH] Revert "power hal: Use power HAL API 1.1" This reverts commit 0a4e11480b277108234f4dcab980d7c7bd6e49f5. The reason of the revert is to check for the application start time regression that may have been caused by the CL (original CL# 2087376) Bug: 38317397 Test: None Change-Id: I4f249ba722791c7238a38e845a5cc2bd2d14a450 Signed-off-by: Ahmed ElArabawy --- core/java/android/os/BatteryStats.java | 12 --- .../android/internal/os/BatteryStatsImpl.java | 7 -- .../server/am/BatteryStatsService.java | 23 ----- services/core/jni/Android.mk | 1 - ..._android_server_am_BatteryStatsService.cpp | 99 ------------------- 5 files changed, 142 deletions(-) diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index cabe24f398d6b..3eea72d5819ba 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -1189,7 +1189,6 @@ public abstract class BatteryStats implements Parcelable { // Platform-level low power state stats public String statPlatformIdleState; - public String statSubsystemPowerState; public HistoryStepDetails() { clear(); @@ -1221,7 +1220,6 @@ public abstract class BatteryStats implements Parcelable { out.writeInt(statSoftIrqTime); out.writeInt(statIdlTime); out.writeString(statPlatformIdleState); - out.writeString(statSubsystemPowerState); } public void readFromParcel(Parcel in) { @@ -1243,7 +1241,6 @@ public abstract class BatteryStats implements Parcelable { statSoftIrqTime = in.readInt(); statIdlTime = in.readInt(); statPlatformIdleState = in.readString(); - statSubsystemPowerState = in.readString(); } } @@ -5390,10 +5387,6 @@ public abstract class BatteryStats implements Parcelable { pw.print(", PlatformIdleStat "); pw.print(rec.stepDetails.statPlatformIdleState); pw.println(); - - pw.print(", SubsystemPowerState "); - pw.print(rec.stepDetails.statSubsystemPowerState); - pw.println(); } else { pw.print(BATTERY_STATS_CHECKIN_VERSION); pw.print(','); pw.print(HISTORY_DATA); pw.print(",0,Dcpu="); @@ -5431,11 +5424,6 @@ public abstract class BatteryStats implements Parcelable { pw.print(rec.stepDetails.statPlatformIdleState); } pw.println(); - - if (rec.stepDetails.statSubsystemPowerState != null) { - pw.print(rec.stepDetails.statSubsystemPowerState); - } - pw.println(); } } oldState = rec.states; diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 342cff64452d1..b9d3a30ecd952 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -169,7 +169,6 @@ public class BatteryStatsImpl extends BatteryStats { public interface PlatformIdleStateCallback { public String getPlatformLowPowerStats(); - public String getSubsystemLowPowerStats(); } private final PlatformIdleStateCallback mPlatformIdleStateCallback; @@ -2843,12 +2842,6 @@ public class BatteryStatsImpl extends BatteryStats { mPlatformIdleStateCallback.getPlatformLowPowerStats(); if (DEBUG) Slog.i(TAG, "WRITE PlatformIdleState:" + mCurHistoryStepDetails.statPlatformIdleState); - - mCurHistoryStepDetails.statSubsystemPowerState = - mPlatformIdleStateCallback.getSubsystemLowPowerStats(); - if (DEBUG) Slog.i(TAG, "WRITE SubsystemPowerState:" + - mCurHistoryStepDetails.statSubsystemPowerState); - } computeHistoryStepDetails(mCurHistoryStepDetails, mLastHistoryStepDetails); if (includeStepDetails != 0) { diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 4db5c85d7b44a..11fc40b047347 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -183,7 +183,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub } private native int getPlatformLowPowerStats(ByteBuffer outBuffer); - private native int getSubsystemLowPowerStats(ByteBuffer outBuffer); private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8 .newDecoder() .onMalformedInput(CodingErrorAction.REPLACE) @@ -215,28 +214,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } - @Override - public String getSubsystemLowPowerStats() { - Slog.d(TAG, "begin getSubsystemLowPowerStats"); - try { - mUtf8BufferStat.clear(); - mUtf16BufferStat.clear(); - mDecoderStat.reset(); - int bytesWritten = getSubsystemLowPowerStats(mUtf8BufferStat); - if (bytesWritten < 0) { - return null; - } else if (bytesWritten == 0) { - return "Empty"; - } - mUtf8BufferStat.limit(bytesWritten); - mDecoderStat.decode(mUtf8BufferStat, mUtf16BufferStat, true); - mUtf16BufferStat.flip(); - return mUtf16BufferStat.toString(); - } finally { - Slog.d(TAG, "end getSubsystemLowPowerStats"); - } - } - BatteryStatsService(File systemDir, Handler handler) { // Our handler here will be accessing the disk, use a different thread than // what the ActivityManagerService gave us (no I/O on that one!). diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk index 84ab48de147cd..e6c2b1d368561 100644 --- a/services/core/jni/Android.mk +++ b/services/core/jni/Android.mk @@ -95,7 +95,6 @@ LOCAL_SHARED_LIBRARIES += \ android.hardware.ir@1.0 \ android.hardware.light@2.0 \ android.hardware.power@1.0 \ - android.hardware.power@1.1 \ android.hardware.tetheroffload.config@1.0 \ android.hardware.thermal@1.0 \ android.hardware.tv.cec@1.0 \ diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp index 37ae78254ce2a..57bb9fedc1354 100644 --- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp +++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp @@ -29,7 +29,6 @@ #include #include -#include #include #include @@ -47,8 +46,6 @@ using android::hardware::power::V1_0::IPower; using android::hardware::power::V1_0::PowerStatePlatformSleepState; using android::hardware::power::V1_0::PowerStateVoter; using android::hardware::power::V1_0::Status; -using android::hardware::power::V1_1::PowerStateSubsystem; -using android::hardware::power::V1_1::PowerStateSubsystemSleepState; using android::hardware::hidl_vec; namespace android @@ -266,105 +263,9 @@ static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject o return total_added; } -static jint getSubsystemLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) { - char *output = (char*)env->GetDirectBufferAddress(outBuf); - char *offset = output; - int remaining = (int)env->GetDirectBufferCapacity(outBuf); - int total_added = -1; - - //This is a IPower 1.1 API - sp gPowerHal_1_1 = nullptr; - - if (outBuf == NULL) { - jniThrowException(env, "java/lang/NullPointerException", "null argument"); - return -1; - } - - { - std::lock_guard lock(gPowerHalMutex); - if (!getPowerHal()) { - ALOGE("Power Hal not loaded"); - return -1; - } - - //Trying to cast to 1.1, this will succeed only for devices supporting 1.1 - gPowerHal_1_1 = android::hardware::power::V1_1::IPower::castFrom(gPowerHal); - if (gPowerHal_1_1 == nullptr) { - //This device does not support IPower@1.1, exiting gracefully - return 0; - } - - Return ret = gPowerHal_1_1->getSubsystemLowPowerStats( - [&offset, &remaining, &total_added](hidl_vec subsystems, - Status status) { - - if (status != Status::SUCCESS) - return; - - for (size_t i = 0; i < subsystems.size(); i++) { - int added; - const PowerStateSubsystem &subsystem = subsystems[i]; - - added = snprintf(offset, remaining, - "subsystem_%zu name=%s ", i + 1, subsystem.name.c_str()); - if (added < 0) { - break; - } - - if (added > remaining) { - added = remaining; - } - - offset += added; - remaining -= added; - total_added += added; - - for (size_t j = 0; j < subsystem.states.size(); j++) { - const PowerStateSubsystemSleepState& state = subsystem.states[j]; - added = snprintf(offset, remaining, - "state_%zu name=%s time=%" PRIu64 " count=%" PRIu64 " last entry TS(ms)=%" PRIu64 " ", - j + 1, state.name.c_str(), state.residencyInMsecSinceBoot, - state.totalTransitions, state.lastEntryTimestampMs); - if (added < 0) { - break; - } - - if (added > remaining) { - added = remaining; - } - - offset += added; - remaining -= added; - total_added += added; - } - - if (remaining <= 0) { - /* rewrite NULL character*/ - offset--; - total_added--; - ALOGE("PowerHal: buffer not enough"); - break; - } - } - } - ); - - if (!ret.isOk()) { - ALOGE("getSubsystemLowPowerStats() failed: power HAL service not available"); - gPowerHal = nullptr; - return -1; - } - } - - *offset = 0; - total_added += 1; - return total_added; -} - static const JNINativeMethod method_table[] = { { "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup }, { "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats }, - { "getSubsystemLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getSubsystemLowPowerStats }, }; int register_android_server_BatteryStatsService(JNIEnv *env)