zoukankan      html  css  js  c++  java
  • 从Android源码修改cpu信息

    cpuinfo

    网上的文章都是怎么查看/proc/cpuinfo,一直以为这种东西没法改呢,我还是太天真了。/proc/cpuinfo是个文件,只读,想直接写肯定不行的。今天研究了一下,发现它的输出逻辑在:
    kernel/[品牌]/[机型代号]/arch/[cpu架构]/kernel/setup.c,修改c_show(struct seq_file *m, void *v)方法,用seq_printf,想输出啥都可以。特地下Linux内核源码下来看,不止Android,其他Linux路径都是类似的。

    cpu频率

    平常我们通过shell命令查看cpu频率的办法,都是读取/sys/devices/system/cpu/cpu0/cpufreq下的cpuinfo_min_freqcpuinfo_max_freq,它们分别代表cpu的最小频率和最大频率,这个几个文件也是可以修改的,修改后并不是你的cpu就会变快,而是可以骗过某些软件,修改方法如下:在kernel/[品牌]/[型号]/drivers/cpufreq/cpufreq.c找到

    show_one(cpuinfo_min_freq, cpuinfo.min_freq);
    show_one(cpuinfo_max_freq, cpuinfo.max_freq);
    

    把它们注释掉,修改成以下两行

    show_cpu_min_freq(cpuinfo_min_freq, cpuinfo.min_freq);
    show_cpu_max_freq(cpuinfo_max_freq,cpuinfo.max_freq);
    

    上面的show_one其实是一个宏定义,那我们也要创建相应的宏。

    #define show_cpu_min_freq(file_name, object)			
    static ssize_t show_##file_name				
    (struct cpufreq_policy *policy, char *buf)		
    {							
    	return sprintf(buf, "%u
    ", 307200);	
    }
    
    #define show_cpu_max_freq(file_name, object)			
    static ssize_t show_##file_name				
    (struct cpufreq_policy *policy, char *buf)		
    {							
    	return sprintf(buf, "%u
    ", 1593600);	
    }
    

    上面的307200和1593600就是我们要修改成的最小频率和最大频率。

    测试

    在Android,修改后执行make bootimage编译内核源码,编译成功后会生成boot.img。让手机进fastboot模式,在源码目录执行fastboot flash boot $OUT/boot.img就把boot.img刷入手机了,重启手机就可以测试。

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/luoyesiqiu/p/9412803.html
Copyright © 2011-2022 走看看