1 2 3 下一页 我们知道,在ucLinux初始化过程中,直到console_init调用之前是没有任何输出的,它们的输出都放在__log_buf这个缓冲内的,在console_init调用时再将这个缓冲区内的数据一次性输出。 那么console_init又做了什么工作呢? /* * Initialize the console device. This is called *early*, so * we can''t necessarily depend on lots of kernel help here. * Just do some early initializations, and do the complex setup * later. */ void __init console_init(void) { initcall_t *call; /* Setup the default TTY line discipline. */ (void) tty_reGISter_ldisc(N_TTY, &tty_ldisc_N_TTY); /* * set up the console device so that later boot sequences can * inform about problems etc.. */ #ifdef CONFIG_EARLY_PRINTK disable_early_printk(); #endif call = __con_initcall_start; while (call < __con_initcall_end) { (*call)(); call++; } }
从这个函数大致可以猜出,console和串口的初始化操作应该是由__con_initcall_start到__con_initcall_end之间的函数调用来完成的。那么放到这段空间中的函数是怎么来的呢?又是什么函数可以放在这段空间中呢? 让我们看看LDF文件中对这两个符号的定义吧: (责任编辑:admin) |