実体はkernel/irq/handle.cにあります。
======
void early_init_irq_lock_class(void)======
{
int i;
for (i = 0; i < NR_IRQS; i++)
lockdep_set_class(&irq_desc[i].lock, &irq_desc_lock_class);
}
ロックの整合性を検証するlockdepのためにロックのマッピング情報を初期化しています。
ここもこれだけ。
void early_init_irq_lock_class(void)======
{
int i;
for (i = 0; i < NR_IRQS; i++)
lockdep_set_class(&irq_desc[i].lock, &irq_desc_lock_class);
}
void early_boot_irqs_off(void)======
{
}
asmlinkage void __init start_kernel(void)======
char * command_line;======
extern struct kernel_param __start___param[], __stop___param[];
smp_setup_processor_id();
/*======
* Need to run as early as possible, to initialize the
* lockdep hash:
*/
lockdep_init();
debug_objects_early_init();
cgroup_init_early();
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;
}