• _init


    __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会将初始化代码按下面的结构安排

  • 相关阅读:
    mysql替代like模糊查询的方法
    8个超实用的jQuery插件应用
    判断登陆设备是否为手机
    SQL tp3.2 批量更新 saveAll
    SQL-批量插入和批量更新
    防止手机端底部导航被搜索框顶起
    php COM
    thinkphp3.2 where 条件查询 复查的查询语句
    Form表单提交,js验证
    jupyter notebook 使用cmd命令窗口打开
  • 原文地址:https://www.cnblogs.com/chjgongzuo/p/12058446.html
Copyright © 2020-2023  润新知