public CpuControlSetting(Context context, RootProcess rootProcess) { super(context, rootProcess); if (Misc.getKernelVersion() >= Misc.KERNEL_VER_3_0_0) { File file = new File(PATH_SCALING_AVAILABLE_FREQS_KERNEL_2_6); if (file.exists()) { mSysFsCpuAvailableFrequencies = new SysFs(PATH_SCALING_AVAILABLE_FREQS_KERNEL_2_6); } else { mSysFsCpuAvailableFrequencies = new SysFs(PATH_SCALING_AVAILABLE_FREQS_KERNEL_3_0); } } else { mSysFsCpuAvailableFrequencies = new SysFs(PATH_SCALING_AVAILABLE_FREQS_KERNEL_2_6); } }
@Override public void setOnBoot() { String value; if (loadGovernorSetOnBoot()) { value = loadScalingGovernor(); if (!Misc.isNullOfEmpty(value)) { setScalingGovernor(value); CpuGovernorSetting cpuGovSetting = new CpuGovernorSetting(mContext, value); cpuGovSetting.setOnBoot(); } } if (loadFreqSetOnBoot()) { value = loadScalingMaxFreq(); if (!Misc.isNullOfEmpty(value)) { setScalingMaxFreq(value); } value = loadScalingMinFreq(); if (!Misc.isNullOfEmpty(value)) { setScalingMinFreq(value); } if (isEnableSuspendFreq()) { value = loadScalingMaxSuspendFreq(); if (!Misc.isNullOfEmpty(value)) { setScalingMaxSuspendFreq(value); } value = loadScalingMinSuspendFreq(); if (!Misc.isNullOfEmpty(value)) { setScalingMinSuspendFreq(value); } } } if (loadVoltSetOnBoot()) { CpuVoltageSetting cpuVoltSetting = new CpuVoltageSetting(mContext); cpuVoltSetting.setOnBoot(); } }
protected CpuGovernorSetting(Context context, String governor) { super(context); mGovernor = governor; mParams = new ArrayList<Parameter>(); File[] govParams = new File(CTRL_PATH + "/" + governor).listFiles(); if (govParams == null) { return; } // setup governor parameter list if ("sakuractive".equals(governor)) { for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("sampling_rate")) { mParams.add(new Parameter("sampling_rate", 10000, 1000000, "μs")); } else if (fileName.equals("up_threshold")) { mParams.add(new Parameter("up_threshold", 1, 100, "%")); } else if (fileName.equals("down_threshold")) { mParams.add(new Parameter("down_threshold", 1, 100, "%")); } else if (fileName.equals("hotplug_in_sampling_periods")) { mParams.add(new Parameter("hotplug_in_sampling_periods", 0, 0)); } else if (fileName.equals("hotplug_out_sampling_periods")) { mParams.add(new Parameter("hotplug_out_sampling_periods", 0, 0)); } else if (fileName.equals("ignore_nice_load")) { mParams.add(new Parameter("ignore_nice_load", 0, 1)); } else if (fileName.equals("boost_timeout")) { mParams.add(new Parameter("boost_timeout", 0, 10000000, "μs")); } } // mParams.add(new Parameter("down_differential", 0, 0)); } else if ("lulzactive".equals(governor)) { CpuControlSetting cpuControlSetting = new CpuControlSetting(context); String[] freqValues = cpuControlSetting.getAvailableFrequencies(); String[] freqEntries = Misc.getFreqencyEntries(freqValues); for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("inc_cpu_load")) { mParams.add(new Parameter("inc_cpu_load", 10, 100)); } else if (fileName.equals("pump_up_step")) { mParams.add(new Parameter("pump_up_step", 0, freqEntries.length)); } else if (fileName.equals("pump_down_step")) { mParams.add(new Parameter("pump_down_step", 0, freqEntries.length)); } else if (fileName.equals("screen_off_min_step")) { mParams.add(new Parameter("screen_off_min_step", 0, freqEntries.length)); } else if (fileName.equals("up_sample_time")) { mParams.add(new Parameter("up_sample_time", 10000, 50000, "μs")); } else if (fileName.equals("down_sample_time")) { mParams.add(new Parameter("down_sample_time", 10000, 100000, "μs")); } } } else if ("smartassV2".equals(governor)) { mGovernor = "smartass"; CpuControlSetting cpuControlSetting = new CpuControlSetting(context); String[] freqValues = cpuControlSetting.getAvailableFrequencies(); String[] freqEntries = Misc.getFreqencyEntries(freqValues); for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("max_cpu_load")) { mParams.add(new Parameter("max_cpu_load", 1, 100, "%")); } else if (fileName.equals("min_cpu_load")) { mParams.add(new Parameter("min_cpu_load", 1, 100, "%")); } else if (fileName.equals("up_rate_us")) { mParams.add(new Parameter("up_rate_us", 1, 100000000, "μs")); } else if (fileName.equals("down_rate_us")) { mParams.add(new Parameter("down_rate_us", 1, 100000000, "μs")); } else if (fileName.equals("ramp_down_step")) { mParams.add(new Parameter("ramp_down_step", 1, 100000000, "μs")); } else if (fileName.equals("ramp_up_step")) { mParams.add(new Parameter("ramp_up_step", 1, 100000000, "μs")); } else if (fileName.equals("sample_rate_jiffies")) { mParams.add(new Parameter("sample_rate_jiffies", 1, 1000)); } else if (fileName.equals("awake_ideal_freq")) { mParams.add(new Parameter("awake_ideal_freq", freqEntries, freqValues)); } else if (fileName.equals("sleep_ideal_freq")) { mParams.add(new Parameter("sleep_ideal_freq", freqEntries, freqValues)); } else if (fileName.equals("sleep_wakeup_freq")) { mParams.add(new Parameter("sleep_wakeup_freq", freqEntries, freqValues)); } // mParams.add(new Parameter("debug_mask", 0, 0)); } } else if ("interactiveX".equals(governor)) { for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("min_sample_time")) { mParams.add(new Parameter("min_sample_time", 10000, 1000000)); } } } else if ("interactive".equals(governor)) { CpuControlSetting cpuControlSetting = new CpuControlSetting(context); String[] freqValues = cpuControlSetting.getAvailableFrequencies(); String[] freqEntries = Misc.getFreqencyEntries(freqValues); for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("go_maxspeed_load")) { mParams.add(new Parameter("go_maxspeed_load", 5, 100, "%")); } else if (fileName.equals("min_sample_time")) { mParams.add(new Parameter("min_sample_time", 10000, 1000000, "μs")); } else if (fileName.equals("above_hispeed_delay")) { mParams.add(new Parameter("above_hispeed_delay", 10000, 1000000, "μs")); } else if (fileName.equals("boost")) { mParams.add(new Parameter("boost", 0, 1)); } else if (fileName.equals("go_hispeed_load")) { mParams.add(new Parameter("go_hispeed_load", 5, 100)); } else if (fileName.equals("hispeed_freq")) { mParams.add(new Parameter("hispeed_freq", freqEntries, freqValues)); } else if (fileName.equals("input_boost")) { mParams.add(new Parameter("input_boost", 0, 1)); } else if (fileName.equals("timer_rate")) { mParams.add(new Parameter("min_sample_time", 10000, 1000000, "μs")); } } } else if ("hotplug".equals(governor)) { for (File param : govParams) { String fileName = param.getName(); if (fileName.equals("sampling_rate")) { mParams.add(new Parameter("sampling_rate", 10000, 1000000, "μs")); } else if (fileName.equals("up_threshold")) { mParams.add(new Parameter("up_threshold", 1, 100, "%")); } else if (fileName.equals("down_threshold")) { mParams.add(new Parameter("down_threshold", 1, 100, "%")); } else if (fileName.equals("hotplug_in_sampling_periods")) { mParams.add(new Parameter("hotplug_in_sampling_periods", 0, 0)); } else if (fileName.equals("hotplug_out_sampling_periods")) { mParams.add(new Parameter("hotplug_out_sampling_periods", 0, 0)); } else if (fileName.equals("ignore_nice_load")) { mParams.add(new Parameter("ignore_nice_load", 0, 1)); } } } else if ("wheatley".equals(governor)) { SysFs sysFs = new SysFs(CTRL_PATH + "/" + mGovernor + "/sampling_rate_min"); String samplingRateMin = sysFs.read(mRootProcess); mParams.add( new Parameter("sampling_rate", Integer.valueOf(samplingRateMin), SAMPING_RATE_MAX)); mParams.add(new Parameter("ignore_nice_load", 0, 1)); mParams.add(new Parameter("powersave_bias", 0, 1000)); mParams.add(new Parameter("up_threshold", 1, 100, "%")); mParams.add(new Parameter("allowed_misses", 0, 100)); mParams.add(new Parameter("target_residency", 10, 100000)); } else if ("adaptive".equals(governor)) { SysFs sysFs = new SysFs(CTRL_PATH + "/" + mGovernor + "/sampling_rate_min"); String samplingRateMin = sysFs.read(mRootProcess); mParams.add( new Parameter("sampling_rate", Integer.valueOf(samplingRateMin), SAMPING_RATE_MAX)); mParams.add(new Parameter("ignore_nice_load", 0, 1)); mParams.add(new Parameter("up_threshold", 1, 100, "%")); } else if ("conservative".equals(governor)) { SysFs sysFs = new SysFs(CTRL_PATH + "/" + mGovernor + "/sampling_rate_min"); String samplingRateMin = sysFs.read(mRootProcess); mParams.add( new Parameter("sampling_rate", Integer.valueOf(samplingRateMin), SAMPING_RATE_MAX)); mParams.add(new Parameter("up_threshold", 1, 100, "%")); mParams.add(new Parameter("down_threshold", 1, 100, "%")); mParams.add(new Parameter("freq_step", 5, 100, "%")); mParams.add(new Parameter("ignore_nice_load", 0, 1)); // mParams.add(new Parameter("sampling_down_factor", 0, 0)); } else if ("ondemandx".equals(governor)) { SysFs sysFs = new SysFs(CTRL_PATH + "/" + mGovernor + "/sampling_rate_min"); String samplingRateMin = sysFs.read(mRootProcess); CpuControlSetting cpuControlSetting = new CpuControlSetting(context); String[] freqValues = cpuControlSetting.getAvailableFrequencies(); String[] freqEntries = Misc.getFreqencyEntries(freqValues); mParams.add( new Parameter("sampling_rate", Integer.valueOf(samplingRateMin), SAMPING_RATE_MAX)); mParams.add(new Parameter("up_threshold", 5, 100, "%")); mParams.add(new Parameter("ignore_nice_load", 0, 1)); mParams.add(new Parameter("powersave_bias", 0, 1000)); mParams.add(new Parameter("suspend_freq", freqEntries, freqValues)); // mParams.add(new Parameter("down_differential", 0, 0)); } else if ("ondemand".equals(governor)) { SysFs sysFs = new SysFs(CTRL_PATH + "/" + mGovernor + "/sampling_rate_min"); String samplingRateMin = sysFs.read(mRootProcess); mParams.add( new Parameter("sampling_rate", Integer.valueOf(samplingRateMin), SAMPING_RATE_MAX)); mParams.add(new Parameter("up_threshold", 5, 100, "%")); mParams.add(new Parameter("ignore_nice_load", 0, 1)); mParams.add(new Parameter("powersave_bias", 0, 1000)); } else if ("powersave".equals(governor)) { // nothing parameter } else if ("powersave".equals(governor)) { // nothing parameter } }