当前位置:首页 > 单片机 > 单片机
[导读]1.启动内核启动应用程序/linuxrcbusyboxini.cinit_main设置信号处理函数初始化控制台parse_inittab解析inittab1.1.解析inittabfile=open(INITTAB,“r”); //打开配置文件/etc/inittabnew_init_action//1创建一个init

1.启动

内核启动应用程序/linuxrc

busyboxini.c

init_main

设置信号处理函数

初始化控制台

parse_inittab解析inittab

1.1.解析inittab

file=open(INITTAB,“r”); //打开配置文件/etc/inittab

new_init_action

//1创建一个init_action结构,填充

//2把结构放入init_action_list链表

默认配置

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

tty2::askfirst:/bin/sh

tty3::askfirst:/bin/sh

tty4::askfirst:/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/sbin/swapoff-a

::shutdown:/bin/umount-a-r

::restart:/sbin/init


1.2.运行


/*Firstrunthesysinitcommand*/

run_actions(SYSINIT);

/*Nextrunanythingthatwantstoblock*/

run_actions(WAIT);

/*Nextrunanythingtoberunonlyonce*/

run_actions(ONCE);

/*Nowruntheloopingstufffortherestofforever*/

while(1){

/*runtherespawn/askfirststuff*/

run_actions(RESPAWN|ASKFIRST);

/*Don'tconsumeallCPUtime--sleepabit*/

sleep(1);

/*Waitforanychildprocesstoexit*/

wpid=wait(NULL);

while(wpid>0){

/*Findoutwhodiedandcleanuptheircorpse*/

for(a=init_action_list;a;a=a->next){

if(a->pid==wpid){

/*Setthepidto0sothattheprocessgets

*restartedbyrun_actions()*/

a->pid=0;

message(L_LOG,"process'%s'(pid%d)exited."

"Schedulingforrestart.",

a->command,wpid);

}

}

/*seeifanyoneelseiswaitingtobereaped*/

wpid=wait_any_nohang(NULL);

}

}



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:首先对火电机组增加调相机功能的励磁设计特点进行了分析,主要包含增加启动励磁、高强励倍数、流程配合等特殊需求,随后针对性探讨和介绍了启动励磁设计、主励磁设计、启动流程设计的原则和要点,并形成一套可用于实际工程化应用的...

关键字: 启动励磁 高强励倍数 启动流程

摘要:Linux具有源代码开放、效率高、可裁剪等优点,在嵌入式系统的开发中具有广泛的应用。文章介绍了嵌入式Linux操作系统、移植目标平台SBC2410及Linux内核源代码的目录结构,分析了Linux移植到SBC241...

关键字: SBC2410 Linux 嵌入式系统 系统移植

在了解了Linux目录的结构及其基本组成之后,您还要了解Linux的工作机制,即Linux的内部工作原理。

关键字: centos7 init Linux

每个Linux系统都有许多主要组件。其中一个组件(引导加载程序)从技术上讲是Linux之外的,常常不被谈论。其余组件都是共同打造整个Linux系统的所有软件元素。这些组件是:

关键字: init Linux 组件

Linux系统中的操作级别是运行操作系统的功能级别,该级别为0到6,共有7个功能级别,即:

关键字: init Linux nfs

本篇的重点是讲解设备和驱动的启动流程,设备和驱动的流程是整个内核启动的核心,也是工作中最常面对的问题。出于知识点的系统性考虑,在进入主题之前我们先看下整个 Linux 在 ARM 中的启动流程如何。 Uboot 的启动流...

关键字: 启动流程 Linux 内核 UBOOT

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: mini2440 u-boot 移植 dm9000驱动

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: eeprom i2c mini2440 u-boot 移植

        Zygote意为“受精卵”,即所有的Android进程都是由其“发育”而来的意思。本人试着把啃代码学到的内容整理出来,希望会对自己以后有用。Init        Init进程是Lin

关键字: Android framework init

以下是驱动的源码。#includelinux/config.h//配置头文件#includelinux/kernel.h//用于调用kmalloc和kfree#includelinux/sched.h//调度,进程睡眠,...

关键字: gpio mini2440 驱动led
关闭
关闭