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,主要是用来调试内核锁的,比如检测加锁的顺序看是否有发生死锁的可能,具体的作用要看后面怎么使用这两个哈希链表。



你可能感兴趣的:(Linux内核源码分析)