原创 android中獲取電池當前電量

Android是通過sys僞文件系統中文件來獲取手機電池的電量及狀態。 路徑: /sys/class/power_supply/xxxx/ 僞裝capacity文件來手動控件電池電量狀態, 基本思路是將/sys/class/power_

原创 構建一個編譯時錯誤

#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); })) , 如果e爲非0的話,將

原创 linux cmdline參數解析

我們可以通過 cat /proc/cmdline來獲取內核的命令行參數,但是每個參數是怎麼在代碼解析的, 以slub爲例,在源碼中有如下代碼: __setup("slub_min_order=", setup_slub_min_order

原创 Android init

轉載:http://www.cnblogs.com/linucos/archive/2012/05/22/2513046.html 1. init程序邏輯 文章引用地址:一篇pdf文檔,來自百度文庫 Android 源碼分析 --

原创 __initcall不能用於模塊代碼中

如題, 本來想在debugfs中生成一個文件的,發現用__initcall用在模塊中不起作用,可考慮用模塊參數代替,/sys/module/xxxx

原创 C語言的逗號表達式

一個表達式最後肯定有一個值,如算術表達式,關係表達式等,因此逗號表達式也有一個值,這個值爲逗號表達式的最後一個表達式的值。一個簡單的測試程序可以說明

原创 /proc/iomem

/proc/iomem這個文件記錄的是物理地址的分配情況,內存只佔用4G(32位CPU)物理地址的一部分,一般從地址0開始,每一行都代表一個資源(地址範圍和資源名), 可用物理內存的資源名爲“System RAM”,如 01000000-

原创 linux 工作隊列

書上寫的工作隊列的實現是創建一個單獨的線程來執行相應的work. 但是最新的內核實現卻不是這樣的,原先的工作隊列的接口都快要廢棄了,  New API: alloc_workqueue(name, flags, max_active)

原创 linux 編譯模塊時發生找不到符號的錯誤

在內核新添加了一個文件,EXPORT_SYMBOL出來一些函數接口,然後創建一個頭文件來申明這些API。 然後在一個模塊裏調用這些API, 編譯出錯: ERROR:· func_name [module_name.ko] undefine

原创 linux usleep_range(min, max)

這個延遲函數最少的延遲時間爲50us, 就算min=max=1, 實際的效果應該不是延遲1us, 而是50us, 大牛們說的。。。

原创 linux del_timer_sync

 Note: You must not hold locks that are held in interrupt context  *   whi

原创 proc文件的讀寫函數

每一個文件都有相應的文件操作表,最主要的就是讀操作和寫操作了, proc文件的讀寫函數得注意其對應的返回值,如果在讀函數內一直返回一個正數,則上層會

原创 linux disable CPU c4/c6 state

echo 1 > /sys/devices/system/cpu/cpuX/cpuidle/state[3/4]/disable

原创 從用戶空間傳遞到內核中字符串的長度

當通過proc文件系統向內核傳遞一個字符串時,例如"abcde", 其字符串的長度爲6而不是5, 其中多了一個換行符: root@android:/ # echo "abcde" >/proc/slab_trace root@andro

原创 login shell 和 non-login shell

login shell會讀取/etc/profile和 ~/.bash_profile[~/.bash_login] [ ~/.profile] /* 三選一, 優先級依次降低*/  和~/.bashrc non-login shell只