android Kernel Start
来源:互联网 发布:上海水利公司 知乎 编辑:程序博客网 时间:2024/05/16 12:04
/XXX_project/kernel/init/main.c
asmlinkage void __init start_kernel(void)
{
rest_init();
}
static noinline void __init_refok rest_init(void)
{
kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
}
static int __init kernel_init(void * unused)
{
do_basic_setup();
}
static void __init do_basic_setup(void)
{
do_initcalls();
}
static void __init do_initcalls(void)
{
int level;
for (level = 0; level < ARRAY_SIZE(initcall_levels) - 1; level++)
do_initcall_level(level);
}
static void __init do_initcall_level(int level)
{
extern const struct kernel_param __start___param[], __stop___param[];
initcall_t *fn;
strcpy(static_command_line, saved_command_line);
parse_args(initcall_level_names[level],
static_command_line, __start___param,
__stop___param - __start___param,
level, level,
repair_env_string);
for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++)
do_one_initcall(*fn);//---挂载每一个设备驱动
}
static initcall_t *initcall_levels[] __initdata = {
__initcall0_start,
__initcall1_start,
__initcall2_start,
__initcall3_start,
__initcall4_start,
__initcall5_start,
__initcall6_start,
__initcall7_start,
__initcall_end,
};
asmlinkage void __init start_kernel(void)
{
rest_init();
}
static noinline void __init_refok rest_init(void)
{
kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
}
static int __init kernel_init(void * unused)
{
do_basic_setup();
}
static void __init do_basic_setup(void)
{
do_initcalls();
}
static void __init do_initcalls(void)
{
int level;
for (level = 0; level < ARRAY_SIZE(initcall_levels) - 1; level++)
do_initcall_level(level);
}
static void __init do_initcall_level(int level)
{
extern const struct kernel_param __start___param[], __stop___param[];
initcall_t *fn;
strcpy(static_command_line, saved_command_line);
parse_args(initcall_level_names[level],
static_command_line, __start___param,
__stop___param - __start___param,
level, level,
repair_env_string);
for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++)
do_one_initcall(*fn);//---挂载每一个设备驱动
}
static initcall_t *initcall_levels[] __initdata = {
__initcall0_start,
__initcall1_start,
__initcall2_start,
__initcall3_start,
__initcall4_start,
__initcall5_start,
__initcall6_start,
__initcall7_start,
__initcall_end,
};
- android Kernel Start
- start kernel flow
- ARM Kernel Start Process
- linux start kernel
- 启动内核出现:start kernel...
- 停在start kernel....问题分析
- tegra tx1 kernel start up
- Android start
- Android Start
- android kernel
- Android kernel
- HOWTO Change the Linux Kernel Start Address
- 让我们现在开始Start Kernel: i386_start_kernel
- Android Kernel (2) - Kernel Bootstrapping
- Start porting kernel 2.6.27.8 to qq2440 (1)
- Start porting kernel 2.6.27.8 to qq2440 (2) -- zImage generation
- Start porting kernel 2.6.27.8 to qq2440 (3) -- clock initialization
- Start porting kernel 2.6.27.8 to qq2440 (5) -- clock issue
- 改错 2
- 阅读程序
- Linux中文件系统的inode
- 用自己电脑做服务器发布网站
- 第六周上机任务 1
- android Kernel Start
- 2013-4-5.2
- Oracle Proxy Authentication(代理身份认证)
- oracle merge into与sqlserver merge into 比较
- Bitbucket使用方法
- 关于c语言中EOF用法的理解
- 改错const
- mysql更改引擎(InnoDB,MyISAM)
- JDBC--Statement,PreparedStatement,CallableStatement的区别