linux初始化的时候,会在do_initcalls中做很多初始化的工作。把里面的初始化函数打印出来,大概如下:
-------------- #define pure_initcall(fn) __define_initcall(fn, 0)
ipc_ns_init
init_mmap_min_addr
net_ns_init
--------------------- #define core_initcall(fn) __define_initcall(fn, 1)
ptrace_break_init
s3c2410a_core_init
s3c2410_core_init
s3c2412_core_init
s3c2416_core_init
s3c2442_core_init
s3c2440_core_init //在sys文件系统下注册s3c2440_core bus及其属性节点
s3c2443_core_init
wq_sysfs_init //在sys文件系统下注册workqueue bus 及其属性节点
ksysfs_init //在sys文件系统下注册kernel及其属性节点
pm_init //电源管理相关的初始化
init_jiffies_clocksource //注册jiffies clocksource
cpu_pm_init
init_zero_pfn
fsnotify_init
filelock_init
init_aout_binfmt // 将aout的文件格式加入formats链表
init_script_binfmt // 将script的文件格式加入formats链表
init_elf_binfmt // 将elf的文件格式加入formats链表
prandom_init
samsung_gpiolib_init //与在/sys文件系统中建立gpio节点有关
sock_init
net_inuse_init
####################################################################
NET: Registered protocol family 16
####################################################################
netlink_proto_init //注册netlink协议
---------------------#define postcore_initcall(fn) __define_initcall(fn, 2)
DMA: preallocated 256 KiB pool for atomic coherent allocations
atomic_pool_init //分配初始化DMA内存分配pool
bdi_class_init
kobject_uevent_init
tty_class_init //在/sys/class下面新建tty目录
vtconsole_class_init
wakeup_sources_debugfs_init
regmap_initcall
spi_init //注册spi总线
i2c_init //注册i2c总线
----------------------------------#define arch_initcall(fn) __define_initcall(fn, 3)
gate_vma_init
customize_machine //smdk2440_machine_init 初始化相关device
exceptions_init
s3c2442_pm_drvinit
s3c2440_pm_drvinit
s3c2410a_pm_drvinit
s3c2410_pm_drvinit
s3c2412_pm_init
s3c2416_pm_init
s3c24xx_clk_init
s3c2442_clk_init
s3c2442_clk_init
s3c2440_clk_init
bast_irq_init
pm_simtec_init //enable电源管理
s3c_arch_init //s3c2440_init,注册相关device
s3c_wdt_reset_init
pwm_init //注册pwm driver
--------------------------------#define subsys_initcall(fn) __define_initcall(fn, 4)
topology_init
param_sysfs_init
pm_sysrq_init
default_bdi_init
init_bio
fsnotify_notification_init
cryptomgr_init
blk_settings_init
blk_ioc_init
blk_softirq_init //注册block的BLOCK_SOFTIRQ软中断
blk_iopoll_setup //注册block的BLOCK_IOPOLL_SOFTIRQ软中断
genhd_device_init //block device的初始化和/sys文件系统节点注册
fbmem_init //注册fb字符设备
misc_init //注册杂项字符设备
pcf50633_init
init_scsi //scsi相关的初始化
########################################################################
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
########################################################################
usb_init //usb子系统初始化
serio_init //注册serio总线
input_init //input子系统初始化
rtc_init //rtc驱动的注册
########################################################################
s3c-i2c s3c2440-i2c.0: slave address 0x10
s3c-i2c s3c2440-i2c.0: bus frequency set to 98 KHz
s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
########################################################################
i2c_adap_s3c_init //i2c驱动的注册
power_supply_class_init
hwmon_init
watchdog_init
mmc_init
leds_init
init_soundcore
########################################################################
Advanced Linux Sound Architecture Driver Initialized.
########################################################################
alsa_sound_init
proto_init
net_dev_init //网络设备初始化,并注册NET_TX_SOFTIRQ和NET_RX_SOFTIRQ软中断
neigh_init //neighbor相关的函数初始化
genl_init
-------------------------------#define fs_initcall(fn) __define_initcall(fn, 5)
proc_cpu_init
dma_debug_do_init
alignment_init
bast_ide_init
########################################################################
Switching to clocksource samsung_clocksource_timer
########################################################################
clocksource_done_booting //切换时钟源
init_pipe_fs //初始化pipefs文件系统
eventpoll_init
anon_inode_init
blk_scsi_ioctl_init
chr_dev_init //注册/dev/mem设备,估计是用来映射内存的
firmware_class_init
sysctl_core_init
#################################################
NET: Registered protocol family 2
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP: reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
#################################################
inet_init //ipv4协议族注册
ipv4_offload_init
########################################################################
NET: Registered protocol family 1
########################################################################
af_unix_init
ipv6_offload_init
-------------------------#define rootfs_initcall(fn) __define_initcall(fn, rootfs)
populate_rootfs
#########################################################################
NetWinder Floating Point Emulator V0.97 (extended precision)
#########################################################################
-----#define module_init(x) __initcall(x);
#define __initcall(fn) device_initcall(fn)
#define device_initcall(fn) __define_initcall(fn, 6)
fpe_init
sched_clock_syscore_init
adc_init //注册s3c-adc driver
proc_execdomains_init //在proc文件系统下面创建execdomains 节点
ioresources_init //在proc文件系统下面创建ioports和iomem节点
uid_cache_init
init_posix_timers
init_posix_cpu_timers
init_sched_debug_procfs
----------------#define device_initcall(fn) __define_initcall(fn, 6)
timekeeping_init_ops
init_clocksource_sysfs
init_timer_list_procfs
alarmtimer_init
futex_init
proc_modules_init
kallsyms_init
pid_namespaces_init
irq_gc_init_ops
irq_pm_init_ops
utsname_sysctl_init
init_per_zone_wmark_min
kswapd_init //kswapd进程就是专司定期将页面换出的守护神
setup_vmstat
mm_sysfs_init
slab_proc_init
init_reserve_notifier
init_admin_reserve
init_user_reserve
proc_vmalloc_init
procswaps_init
slab_proc_init
cpucache_init
fcntl_init
proc_filesystems_init
dio_init
fsnotify_mark_init
dnotify_init
inotify_user_setup
aio_setup
proc_locks_init
init_mbcache
proc_cmdline_init
proc_consoles_init
proc_cpuinfo_init
proc_devices_init
proc_interrupts_init
proc_loadavg_init
proc_meminfo_init
proc_stat_init
proc_uptime_init
proc_version_init
proc_softirqs_init
proc_kmsg_init
proc_page_init
init_devpts_fs
init_ext3_fs
init_ext2_fs
journal_init
init_cramfs_fs
init_ramfs_fs
init_fat_fs
init_vfat_fs
init_msdos_fs
init_iso9660_fs
init_nls_cp437
init_nls_cp850
#############################################################################
jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc.
#############################################################################
init_jffs2_fs
#############################################################################
ROMFS MTD (C) 2007 Red Hat, Inc.
#############################################################################
init_romfs_fs
ipc_init
ipc_sysctl_init
crypto_wq_init
crypto_algapi_init
skcipher_module_init
chainiv_module_init
eseqiv_module_init
aes_init
deflate_mod_init
lzo_mod_init
krng_mod_init
proc_genhd_init
io scheduler noop registered
noop_init
#############################################################################
io scheduler deadline registered
#############################################################################
deadline_init
#############################################################################
io scheduler cfq registered (default)
#############################################################################
cfq_init
fb_console_init
#############################################################################
cpu_startup_entry.
Console: switching to colour frame buffer device 30x40
s3c2410-lcd s3c2410-lcd: fb0: s3c2410fb frame buffer device
#############################################################################
s3c2410fb_init
sm501fb_driver_init
pty_init
sysrq_init
#############################################################################
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
#############################################################################
serial8250_init
#############################################################################
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 74) is a S3C2440
console [ttySAC0] enabled
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 77) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 80) is a S3C2440
#############################################################################
s3c24xx_serial_modinit //注册串口驱动
init_kgdboc
rand_initialize
lp_init_module
#############################################################################
ppdev: user-space parallel port driver
#############################################################################
ppdev_init
parport_default_proc_register
topology_sysfs_init
isa_bus_init
brd_init
loop_init
at24_init
sm501_base_init
ide_init
ide_gd_init
ide_cdrom_init
platform_ide_init
init_sd
init_sg
init_mtd //初始化mtd
ofpart_parser_init
redboot_parser_init
cmdline_parser_init
init_mtdblock
cfi_probe_init
jedec_probe_init
map_rom_init
nand_base_init
############################################################################
s3c24xx-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit), 256MiB, page size: 2048, OOB size: 64
Scanning device for bad blocks
Bad eraseblock 682 at 0x000005540000
Bad eraseblock 1024 at 0x000008000000
Bad eraseblock 1736 at 0x00000d900000
Bad eraseblock 1979 at 0x00000f760000
Creating 4 MTD partitions on "NAND":
0x000000000000-0x000000200000 : "uboot"
0x000000200000-0x000000220000 : "u-boot-env"
0x000000220000-0x000000620000 : "kernel"
0x000000620000-0x000010000000 : "rootfs"
############################################################################
s3c24xx_nand_driver_init
ubi_gluebi_init
net_olddevs_init
dm9000_driver_init
cdrom_init
mon_init
############################################################################
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
############################################################################
ohci_hcd_mod_init
############################################################################
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
############################################################################
usb_serial_init
############################################################################
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
############################################################################
ftdi_init
############################################################################
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
############################################################################
usb_serial_module_init
serport_init
mousedev_init
evdev_init
atkbd_init
psmouse_init
s3c_rtc_driver_init
simtec_i2c_driver_init
############################################################################
s3c2410-wdt s3c2410-wdt: tmr_margin value out of range, default 15 used
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq disabled
############################################################################
s3c2410wdt_driver_init
mmc_blk_init
s3cmci_driver_init
bl_trig_init
hid_init
hid_generic_init
a4_driver_init
apple_driver_init
belkin_driver_init
ch_driver_init
ch_driver_init
cp_driver_init
ez_driver_init
ks_driver_init
lg_driver_init
ms_driver_init
mr_driver_init
alsa_timer_init
alsa_pcm_init
snd_mem_init
snd_compress_init
snd_soc_init
sock_diag_init
flow_cache_init_global
sysctl_ipv4_init
xfrm4_beet_init
xfrm4_transport_init
xfrm4_mode_tunnel_init
ipv4_netfilter_init
inet_diag_init
tcp_diag_init
cubictcp_register
##############################################################################
NET: Registered protocol family 17
##############################################################################
packet_init
--------------#define late_initcall(fn) __define_initcall(fn, 7)
init_machine_late
init_oops_id
printk_late_init
sched_init_debug
pm_qos_power_init
max_swapfiles_check
ubifs_init
prandom_reseed
random_int_secret_init
deferred_probe_initcall
##############################################################################
UBI: default fastmap pool size: 95
UBI: default fastmap WL pool size: 25
UBI: attaching mtd3 to ubi0
usb 1-1: new full-speed USB device number 2 using s3c2410-ohci
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
UBI: scanning is finished
UBI warning: print_rsvd_warning: cannot reserve enough PEBs for bad PEB handling, reserved 34, need 36
UBI: attached mtd3 (name "rootfs", size 249 MiB) to ubi0
UBI: PEB size: 131072 bytes (128 KiB), LEB size: 129024 bytes
UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 512
UBI: VID header offset: 512 (aligned 512), data offset: 2048
UBI: good PEBs: 1995, bad PEBs: 4, corrupted PEBs: 0
UBI: user volume: 1, internal volumes: 1, max. volumes count: 128
UBI: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 0
UBI: available PEBs: 0, total reserved PEBs: 1995, PEBs reserved for bad PEB handling: 34
UBI: background thread "ubi_bgt0d" started, PID 943
##############################################################################
ubi_init
rtc_hctosys
tcp_congestion_default
tcp_fastopen_init
ip_auto_config
alsa_sound_last_init
initialize_hashrnd