outsource from india chennai india programmers freelance php coder freelance outsource scripts programming complicated perl patterns php module installation
outsource from india perl installation and configuration php installation linux system administration US$15,US$19,US$11,US$10 cheap programmer
india outsource outsource india chennai india programmers php perl mysql freelance freelance programmer
SHOWCASE of php and perl scripts CONTACT US for php custom perl scripts
HOME
 
Next Previous Contents

4. Linux Startup

We start the Linux kernel first from C code executed from ''startup_32:'' asm label:

|startup_32:
   |start_kernel
      |lock_kernel
      |trap_init
      |init_IRQ
      |sched_init
      |softirq_init
      |time_init
      |console_init 
      |#ifdef CONFIG_MODULES 
         |init_modules 
      |#endif 
      |kmem_cache_init 
      |sti 
      |calibrate_delay 
      |mem_init
      |kmem_cache_sizes_init
      |pgtable_cache_init
      |fork_init
      |proc_caches_init 
      |vfs_caches_init
      |buffer_init
      |page_cache_init
      |signals_init 
      |#ifdef CONFIG_PROC_FS 
        |proc_root_init 
      |#endif 
      |#if defined(CONFIG_SYSVIPC) 
         |ipc_init
      |#endif 
      |check_bugs      
      |smp_init
      |rest_init
         |kernel_thread
         |unlock_kernel
         |cpu_idle

  • startup_32 [arch/i386/kernel/head.S]
  • start_kernel [init/main.c]
  • lock_kernel [include/asm/smplock.h]
  • trap_init [arch/i386/kernel/traps.c]
  • init_IRQ [arch/i386/kernel/i8259.c]
  • sched_init [kernel/sched.c]
  • softirq_init [kernel/softirq.c]
  • time_init [arch/i386/kernel/time.c]
  • console_init [drivers/char/tty_io.c]
  • init_modules [kernel/module.c]
  • kmem_cache_init [mm/slab.c]
  • sti [include/asm/system.h]
  • calibrate_delay [init/main.c]
  • mem_init [arch/i386/mm/init.c]
  • kmem_cache_sizes_init [mm/slab.c]
  • pgtable_cache_init [arch/i386/mm/init.c]
  • fork_init [kernel/fork.c]
  • proc_caches_init
  • vfs_caches_init [fs/dcache.c]
  • buffer_init [fs/buffer.c]
  • page_cache_init [mm/filemap.c]
  • signals_init [kernel/signal.c]
  • proc_root_init [fs/proc/root.c]
  • ipc_init [ipc/util.c]
  • check_bugs [include/asm/bugs.h]
  • smp_init [init/main.c]
  • rest_init
  • kernel_thread [arch/i386/kernel/process.c]
  • unlock_kernel [include/asm/smplock.h]
  • cpu_idle [arch/i386/kernel/process.c]

The last function ''rest_init'' does the following:

  1. launches the kernel thread ''init''
  2. calls unlock_kernel
  3. makes the kernel run cpu_idle routine, that will be the idle loop executing when nothing is scheduled

In fact the start_kernel procedure never ends. It will execute cpu_idle routine endlessly.

Follows ''init'' description, which is the first Kernel Thread:

|init
   |lock_kernel
   |do_basic_setup
      |mtrr_init
      |sysctl_init
      |pci_init
      |sock_init
      |start_context_thread
      |do_init_calls
         |(*call())-> kswapd_init
   |prepare_namespace
   |free_initmem
   |unlock_kernel
   |execve

Next Previous Contents
Linux HOWTO full list
   This document, LDP HOWTO-INDEX, is copyrighted (c) 1995 - 2002 by Tim Bynum, Guylhem Aznar, Joshua Drake and Greg Ferguson. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html. If you have questions, please contact the LDP.
Web Design Copyright © 1999-2003. Chrisranjana Software Solutions Pvt Ltd. syndicate rss feed