Android代碼獲取CPU運行情況
眾所周知,android的os是linux。也就是說,關于硬件的信息,只有從linux接口才能得到。我們知道,除了系統調用,只能從proc sys這兩個文件系統里獲取數據了。cpu信息也藏在這兩個文件系統里。專門的系統調用不靈活,且依賴c庫。
1. /proc/cpuinfo
通過這個可以統計cpu情況,包括cpu個數,cpu核心數,cpu硬件線程數。不過android上,這個沒啥用。
kernel位置: fs/proc/cpuinfo.c
2. /proc/stat
這個能獲取每個cpu的活動情況,一些統計信息,不包括頻率,我們知道頻率是通過cpufreq獲取的。
kernel位置:fs/proc/stat.c
3. /sys/devices/system/cpu
這個目錄下的諸如cpu0 cpu1等都是kernel里注冊cpu時候,生成的節點,通過這個統計基本上可以統計出cpu的情況了。通過建立鏈接的方式,可以偽造一個cpuX。
sysfs_create_link(&cpu_subsys.dev_root->kobj, &cpu->dev.kobj, “cpu1″);
kernel位置:drivers/base/cpu.c
4. android的vm接口
Runtime.java:605: public int availableProcessors() {
源碼位置;libcore
注意:這個接口實際上最后調用了bionic的sysconf接口,這個接口也是統計的/sys/devices/system/cpu/下的信息,但是鏈接是不算數的。
來源:opendevkit
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!