1. 程式人生 > >Linux核心原始碼分析(六)--start_kernel之lockdep_init

Linux核心原始碼分析(六)--start_kernel之lockdep_init

這個函式比較短,這裡直接貼出來。

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,主要是用來除錯核心鎖的,比如檢測加鎖的順序看是否有發生死鎖的可能,具體的作用要看後面怎麼使用這兩個雜湊連結串列。