Init进程启动

Init进程启动

ID:37710287

大小:163.50 KB

页数:18页

时间:2019-05-29

Init进程启动_第1页
Init进程启动_第2页
Init进程启动_第3页
Init进程启动_第4页
Init进程启动_第5页
资源描述:

《Init进程启动》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Init进程启动asmlinkagevoid__initstart_kernel(void){..........................................rest_init();}staticnoinlinevoid__init_refokrest_init(void)__releases(kernel_lock){intpid;rcu_scheduler_starting();/**Weneedtospawninitfirstsothatitobtainspid1,howe

2、ver*theinittaskwillendupwantingtocreatekthreads,which,if*wescheduleitbeforewecreatekthreadd,willOOPS.*/kernel_thread(kernel_init,NULL,CLONE_FS

3、CLONE_SIGHAND);numa_default_policy();pid=kernel_thread(kthreadd,NULL,CLONE_FS

4、CLONE_FILES);rcu_read_lock();kt

5、hreadd_task=find_task_by_pid_ns(pid,&init_pid_ns);rcu_read_unlock();complete(&kthreadd_done);unlock_kernel();/**Thebootidlethreadmustexecuteschedule()*atleastoncetogetthingsmoving:*/init_idle_bootup_task(current);preempt_enable_no_resched();schedule();

6、preempt_disable();/*Callintocpu_idlewithpreemptdisabled*/cpu_idle();}staticint__initkernel_init(void*unused){/**Waituntilkthreaddisallset-up.*/wait_for_completion(&kthreadd_done);lock_kernel();do_basic_setup();..........................................

7、........init_post();return0;}staticnoinlineintinit_post(void)__releases(kernel_lock){/*needtofinishallasync__initcodebeforefreeingthememory*/async_synchronize_full();free_initmem();unlock_kernel();mark_rodata_ro();system_state=SYSTEM_RUNNING;numa_defau

8、lt_policy();current->signal->flags

9、=SIGNAL_UNKILLABLE;if(ramdisk_execute_command){run_init_process(ramdisk_execute_command);printk(KERN_WARNING"Failedtoexecute%s",ramdisk_execute_command);}/**Wetryeachoftheseuntilonesucceeds.**TheBourneshellcanbeused

10、insteadofinitifweare*tryingtorecoverareallybrokenmachine.*/if(execute_command){run_init_process(execute_command);printk(KERN_WARNING"Failedtoexecute%s.Attempting""defaults...",execute_command);}run_init_process("/sbin/init");run_init_process("/etc/in

11、it");run_init_process("/bin/init");run_init_process("/bin/sh");panic("Noinitfound.Trypassinginit=optiontokernel.""SeeLinuxDocumentation/init.txtforguidance.");}staticvoidrun_init_process(char*init_filename){argv_init[0]=init_filename;ke

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。