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