initcall debug簡要說明

2021-06-22 18:20:23 字數 1339 閱讀 4732

linux version 3.10.40

1. 使用說明

documentation/kernel-parameters.txt中的說明如下:

initcall_debug  [knl] trace initcalls as they are executed.  useful

for working out where the kernel is dying during

startup.

說明initcall_debug是乙個核心引數,可以跟蹤initcall,用來定位核心初始化的問題。在cmdline中增加initcall_debug後,核心啟動過程中會增加如下形式的日誌,在呼叫每乙個init函式前有一句列印,結束後再有一句列印並且輸出了該init函式執行的時間,通過這個資訊可以用來定位啟動過程中哪個init函式執行失敗以及哪些init函式執行時間較長。

calling  init_workqueues+0x0/0x414 @ 1

initcall init_workqueues+0x0/0x414 returned 0 after 0 usecs

除了在啟動過程中會增加日誌外,在系統休眠喚醒過程中也會增加如下形式的日誌,可以用來定位休眠喚醒失敗及休眠喚醒時間太長的問題。

calling  ******.dma+ @ 6, parent: ***.0

call ******.dma+ returned 0 after 2 usecs

2. 相關**

./init/main.c中宣告變數的地方如下,通過core_param,可以通過/sys/module/kernel/parameters/initcall_debug在使用者空間獲取initcall_debug的狀態,另外cmdline能起作用依賴的應該也是這行**,關於core_param的實現也很複雜,以後再研究。

bool initcall_debug;

core_param(initcall_debug, initcall_debug, bool, 0644);

do_one_initcall函式根據initcall_debug決定是直接呼叫啟動init函式還是呼叫do_one_initcall_debug,do_one_initcall_debug中在呼叫init函式時增加日誌及計算函式執行時間。

./kernel/power/main.c中根據initcall_debug設定pm_print_times_enabled,./drivers/base/power/main.c中根據pm_print_times_enabled在系統休眠喚醒中列印日誌。

遺留問題:

1. core_param的實現原理

2. 核心中他幾個地方判斷initcall_debug變數,增加日誌輸出的作用

android application簡要類(一)

1.至android應用級事件,如廣播的實現中低聲回應。2.傳遞應用程式元件之間的物體 全域性變數 3.管理和維護多個應用程式元件使用的資源。返回應用程式例項 return singleton override public void oncreate android allowbackup tru...

Asp HTTP 簡要介紹

asp http 簡要介紹 特性 1 get post head 請求方法 2 response 回應 頭可見 3 accept 接受 頭可修改 4 超時時間可調整 5 支援proxy 6 自定義客戶 頭 7 自定義posts的內容 型別頭 8 重定向 9 支援驗證內容 10 從url獲得檔案 包括...

Ransac 簡要介紹

什麼是ransac?ransac是randomsampleconsensus 隨機抽樣一致性 的縮寫。它是從乙個觀察資料集合中,估計模型引數 模型擬合 的迭代方法。它是一種隨機的不確定演算法,每次運算求出的結果可能不相同,但總能給出乙個合理的結果,為了提高概率必須提高迭代次數。ransac很強大。如...