码迷,mamicode.com
首页 > 其他好文 > 详细

_init

时间:2019-12-18 10:48:56      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:asm   lin   art   processor   http   优先   宏定义   使用   gcc   

__init 只是告诉内核,你这个函数执行一次就不再执行,因此该函数空间可以释放,当栈用。
内核就把这些 标记着__init的收集到一块,.init段内,执行顺序是由 arch_initcall() , module_init()。

 

.initcall1.init 
.initcall2.init 
.initcall3.init 
.initcall4.init 
.initcall5.init 
.initcall6.init 
.initcall7.init 

core_initcall(fn) --->.initcall1.init
postcore_initcall(fn) --->.initcall2.init
arch_initcall(fn) --->.initcall3.init
subsys_initcall(fn) --->.initcall4.init
fs_initcall(fn) --->.initcall5.init
device_initcall(fn) --->.initcall6.init
late_initcall(fn) --->.initcall7.init

INITCALL这个宏定义只有把它放到vmlinux.lds.s里面看才有意义。
.initcall.init :
{
___initcall_start = .;
INITCALLS
___initcall_end = .;
}
从__early_initcall_end执行到__initcall_end


kernel将初始化要执行的init函数,分为7个级别,
core_initcall, postcore_initcall, arch_initcall, subsys_initcall, fs_iitcall, device_initcall,late_initcall。
这7个级别优先级递减,即先执行core_initcall,最后执行late_initcall(二中将具体讲述这些宏)。
通过使用文中提到的宏,gcc会将初始化代码按下面的结构安排

技术图片

 

 

kernel将初始化要执行的init函数,分为7个级别,core_initcall, postcore_initcall, arch_initcall, subsys_initcall, fs_iitcall, device_initcall, late_initcall。这7个级别优先级递减,即先执行core_initcall, 最后执行late_initcall(二中将具体讲述这些宏)。通过使用文中提到的宏,gcc会将初始化代码按下面的结构安排

_init

标签:asm   lin   art   processor   http   优先   宏定义   使用   gcc   

原文地址:https://www.cnblogs.com/chjgongzuo/p/12058446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!