/Honor5C-7.0/src/main/java/com/android/server/rms/iaware/memory/utils/MemoryUtils.java

https://github.com/dstmath/HWFramework · Java · 99 lines · 90 code · 9 blank · 0 comment · 15 complexity · 697ce8bf10c6c233a3244c3c7bac4464 MD5 · raw file

  1. package com.android.server.rms.iaware.memory.utils;
  2. import android.os.StrictMode;
  3. import android.os.StrictMode.ThreadPolicy;
  4. import android.os.SystemProperties;
  5. import android.rms.iaware.AwareLog;
  6. import android.rms.iaware.IAwaredConnection;
  7. import com.android.server.mtm.iaware.appmng.AwareAppMngSort;
  8. import com.android.server.mtm.iaware.appmng.AwareAppMngSortPolicy;
  9. import com.android.server.mtm.iaware.appmng.AwareProcessBlockInfo;
  10. import com.android.server.rms.collector.ResourceCollector;
  11. import com.android.server.wifipro.WifiProCommonUtils;
  12. import huawei.com.android.server.policy.HwGlobalActionsData;
  13. import java.nio.ByteBuffer;
  14. import java.util.List;
  15. public class MemoryUtils {
  16. private static final String TAG = "AwareMem_MemoryUtils";
  17. public static AwareAppMngSortPolicy getAppMngSortPolicy(int groupId) {
  18. return getAppMngSortPolicy(groupId, 0);
  19. }
  20. public static AwareAppMngSortPolicy getAppMngSortPolicy(int groupId, int subType) {
  21. if (!AwareAppMngSort.checkAppMngEnable() || groupId < 0 || groupId > 3) {
  22. return null;
  23. }
  24. AwareAppMngSort sorted = AwareAppMngSort.getInstance();
  25. if (sorted == null) {
  26. return null;
  27. }
  28. return sorted.getAppMngSortPolicy(0, subType, groupId);
  29. }
  30. public static List<AwareProcessBlockInfo> getAppMngProcGroup(AwareAppMngSortPolicy policy, int groupId) {
  31. if (policy == null) {
  32. AwareLog.e(TAG, "getAppMngProcGroup sort policy null!");
  33. return null;
  34. }
  35. List<AwareProcessBlockInfo> processGroups = null;
  36. switch (groupId) {
  37. case WifiProCommonUtils.HISTORY_ITEM_NO_INTERNET /*0*/:
  38. processGroups = policy.getForbidStopProcBlockList();
  39. break;
  40. case HwGlobalActionsData.FLAG_AIRPLANEMODE_ON /*1*/:
  41. processGroups = policy.getShortageStopProcBlockList();
  42. break;
  43. case HwGlobalActionsData.FLAG_AIRPLANEMODE_OFF /*2*/:
  44. processGroups = policy.getAllowStopProcBlockList();
  45. break;
  46. default:
  47. AwareLog.w(TAG, "getAppMngProcGroup unknown group id!");
  48. break;
  49. }
  50. return processGroups;
  51. }
  52. public static int killProcessGroupForQuickKill(int uid, int pid) {
  53. ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
  54. try {
  55. int killProcessGroupForQuickKill = ResourceCollector.killProcessGroupForQuickKill(uid, pid);
  56. return killProcessGroupForQuickKill;
  57. } finally {
  58. StrictMode.setThreadPolicy(savedPolicy);
  59. }
  60. }
  61. public static void writeSwappiness(int swappiness) {
  62. if (swappiness > WifiProCommonUtils.HTTP_REACHALBE_HOME || swappiness < 0) {
  63. AwareLog.w(TAG, "invalid swappiness value");
  64. return;
  65. }
  66. AwareLog.i(TAG, "setSwappiness = " + swappiness);
  67. ByteBuffer buffer = ByteBuffer.allocate(8);
  68. buffer.putInt(WifiProCommonUtils.HTTP_REDIRECTED);
  69. buffer.putInt(swappiness);
  70. IAwaredConnection.getInstance().sendPacket(buffer.array());
  71. }
  72. public static void writeDirectSwappiness(int directswappiness) {
  73. if (directswappiness > WifiProCommonUtils.HTTP_REACHALBE_HOME || directswappiness < 0) {
  74. AwareLog.w(TAG, "invalid directswappiness value");
  75. return;
  76. }
  77. AwareLog.i(TAG, "setDirectSwappiness = " + directswappiness);
  78. ByteBuffer buffer = ByteBuffer.allocate(8);
  79. buffer.putInt(MemoryConstant.MSG_DIRECT_SWAPPINESS);
  80. buffer.putInt(directswappiness);
  81. IAwaredConnection.getInstance().sendPacket(buffer.array());
  82. }
  83. public static void writeExtraFreeKbytes(int extrafreekbytes) {
  84. if (extrafreekbytes <= 0 || extrafreekbytes >= MemoryConstant.MAX_EXTRA_FREE_KBYTES) {
  85. AwareLog.w(TAG, "invalid extrafreekbytes value");
  86. } else {
  87. SystemProperties.set("sys.sysctl.extra_free_kbytes", Integer.toString(extrafreekbytes));
  88. }
  89. }
  90. }