Linux核心原始碼分析(六)--start_kernel之lockdep_init
阿新 • • 發佈:2019-02-20
這個函式比較短,這裡直接貼出來。
void lockdep_init(void)
{
int i;
/*
* Some architectures have their own start_kernel()
* code which calls lockdep_init(), while we also
* call lockdep_init() from the start_kernel() itself,
* and we want to initialize the hashes only once:
*/
if (lockdep_initialized)
return;
for (i = 0; i < CLASSHASH_SIZE; i++)
INIT_LIST_HEAD(classhash_table + i);
for (i = 0; i < CHAINHASH_SIZE; i++)
INIT_LIST_HEAD(chainhash_table + i);
lockdep_initialized = 1;
}
可以看到函式中初始化了兩個雜湊連結串列,分別是classhash_table和chainhash_table,主要是用來除錯核心鎖的,比如檢測加鎖的順序看是否有發生死鎖的可能,具體的作用要看後面怎麼使用這兩個雜湊連結串列。