Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3432973
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2009-01-30 15:06:40

/*
 * Activate the first processor.
 */
asmlinkage void __init start_kernel(void)
{
 char * command_line;  //内核启动参数
 extern struct kernel_param __start___param[], __stop___param[];
/*
 * Interrupts are still disabled. Do necessary setups, then
 * enable them
 */
 lock_kernel();
 page_address_init();
 printk(KERN_NOTICE);
 printk(linux_banner);
 setup_arch(&command_line);
 setup_per_cpu_areas();
 /*
  * Mark the boot cpu "online" so that it can call console drivers in
  * printk() and can access its per-cpu storage.
  */
 smp_prepare_boot_cpu();
 /*
  * Set up the scheduler prior starting any interrupts (such as the
  * timer interrupt). Full topology setup happens at smp_init()
  * time - but meanwhile we still have a functioning scheduler.
  */
 sched_init();
 /*
  * Disable preemption - early bootup scheduling is extremely
  * fragile until we cpu_idle() for the first time.
  */
 preempt_disable();
 build_all_zonelists();
 page_alloc_init();
 printk(KERN_NOTICE "Kernel command line: %s\n", saved_command_line);
 parse_early_param();
 parse_args("Booting kernel", command_line, __start___param,
     __stop___param - __start___param,
     &unknown_bootoption);
 sort_main_extable();
 trap_init();
 rcu_init();
 init_IRQ();
 pidhash_init();
 init_timers();
 softirq_init();
 time_init();
 /*
  * HACK ALERT! This is early. We're enabling the console before
  * we've done PCI setups etc, and console_init() must be aware of
  * this. But we do want output early, in case something goes wrong.
  */
 console_init();
 if (panic_later)
  panic(panic_later, panic_param);
 profile_init();
 local_irq_enable();
#ifdef CONFIG_BLK_DEV_INITRD
 if (initrd_start && !initrd_below_start_ok &&
   initrd_start < min_low_pfn << PAGE_SHIFT) {
  printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - "
      "disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT);
  initrd_start = 0;
 }
#endif
 vfs_caches_init_early();
 mem_init();
 kmem_cache_init();
 setup_per_cpu_pageset();
 numa_policy_init();
 if (late_time_init)
  late_time_init();
 calibrate_delay();
 pidmap_init();
 pgtable_cache_init();
 prio_tree_init();
 anon_vma_init();
#ifdef CONFIG_X86
 if (efi_enabled)
  efi_enter_virtual_mode();
#endif
 fork_init(num_physpages);
 proc_caches_init();
 buffer_init();
 unnamed_dev_init();
 key_init();
 security_init();
 vfs_caches_init(num_physpages);
 radix_tree_init();
 signals_init();
 /* rootfs populating might need page-writeback */
 page_writeback_init();
#ifdef CONFIG_PROC_FS
 proc_root_init();
#endif
 cpuset_init();
 check_bugs();
 acpi_early_init(); /* before LAPIC and SMP init */
 /* Do the rest non-__init'ed, we're now alive */
 rest_init();
}
阅读(585) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~