(转)分析kernel的initcall函数
| 分析kernel的initcall函数 | |
|
|
|
| 来源: ChinaUnix博客 日期: 2008.07.19 21:24 (共有条评论) 我要评论 | |
| 分析kernel的initcall函数 Author: Dongas Data: 08-07-15 先来看看这些initcall函数的声明: #define __define_initcall(level,fn) \ #define core_initcall(fn) __define_initcall("1",fn) #define __initcall(fn) device_initcall(fn) #define __exitcall(fn) \ #define console_initcall(fn) \ #define security_initcall(fn) \ #define module_init(x) __initcall(x); ß从这里知道module_init的等级为6,相对靠后 可以发现这些*_initcall(fn)最终都是通过__define_initcall(level,fn)宏定义生成的。 这句话的意思为定义一个initcall_t型的初始化函数,函数存放在.initcall”level”.init section内。.initcall”level”.init section定义在vmlinux.lds内。 下面我们再来看看,内核是什么时候调用存储在.initcall”level”.init section内的函数的。 内核是通过do_initcalls函数循环调用执行initcall.init section内的函数的,流程如下: 这里要分析两个函数: kernel_thread和do_initcalls,这两个函数都定义在init/main.c内 2) do_initcalls __initcall_start和__initcall_end定义在vmlinux.lds内,表示initcall section的起始和结束地址。 最后要注意的是rest_init是在start_kernel函数内最后部分才被调用执行的,rest_init前包含了kernel一系列的初始化工作。另外,这些不同level等级的initcall.init section本身有一定的执行顺序,因此如果你的驱动依赖于特定的执行顺序的话需要考虑到这一点。 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60011/showart_1086523.html |
(转)分析kernel的initcall函数的更多相关文章
- 第3阶段——内核启动分析之start_kernel初始化函数(5)
内核启动分析之start_kernel初始化函数(init/main.c) stext函数启动内核后,就开始进入start_kernel初始化各个函数, 下面只是浅尝辄止的描述一下函数的功能,很多函数 ...
- MediaInfo源代码分析 2:API函数
本文主要分析MediaInfo的API函数.它的API函数位于MediaInfo.h文件中的一个叫做MediaInfo的类中. 该类如下所示,部分重要的方法已经加上了注释: //MediaInfo类 ...
- 实验作业:使gdb跟踪分析一个系统调用内核函数
实验作业:使gdb跟踪分析一个系统调用内核函数(我使用的是getuid) 20135313吴子怡.北京电子科技学院 [第一部分] 根据视频演示的步骤,先做第一部分,步骤如下 ①更新menu代码到最新版 ...
- LInux设备驱动分析—— kmalloc和kzalloc函数
今晚在研究EVM5728开发板上面Linux系统的IIC设备驱动程序,偶然之间看到驱动程序中有一处使用了kzalloc函数,本人之前都是使用Linux内核提供的kmalloc / kfree函数来给设 ...
- 网络游戏逆向分析-3-通过发包函数找功能call
网络游戏逆向分析-3-通过发包函数找功能call 网络游戏和单机游戏的分析有相似点,但是区别还是很大的. 网络游戏和单机游戏的区别: 网络游戏是需要和服务器进行交互的,网游中的所有功能几乎都会先发送封 ...
- 6.分析request_irq和free_irq函数如何注册注销中断
上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...
- 第3阶段——内核启动分析之创建si工程和分析stext启动内核函数(4)
目标: (1)创建Source Insight 工程,方便后面分析如何启动内核的 (2)分析uboot传递参数,链接脚本如何进入stext的 (3) 分析stext函数如何启动内核: (3.1) ...
- 6.分析request_irq和free_irq函数如何注册注销中断(详解)
上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...
- Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取
为什么要写这篇文章 1. 因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了K ...
随机推荐
- 机器学习(6): 层次聚类 hierarchical clustering
假设有N个待聚类的样本,对于层次聚类来说,步骤: 1.(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度: 2.寻找各个类之间最近的两个类, ...
- php序列化与反序列化时字符集不一致问题的解决办法
今天的用PHP的时候无意的出现了用unserialize()函数转换老是返回false,我确认我的字符串是没错的,测试了很多次还是一样,没办法,启用了error_reporting(E_ALL)启用错 ...
- cocos2dx实现3d拾取注意事项
用的是cocos2dx 3.x,如果是真机测试,glview = cocos2d::GLViewImpl::createWithRect(...)和glview->setDesignResolu ...
- thinkphp中获取参数值的方法
以获取$type这个参数为例:一:通过传统方法:$_GET, $_POST $type = intval($_GET['type'])这种方法需要自己写过滤规则,保证数据安全. 二:在Actio ...
- JMeter学习笔记(五)-总结
本周主要学习了JMeter如下几方面内容: (1)Bdboy录制方式: (2)JMeter的代理录制方式: (3)关联,在关联时我们要找到哪些内容是要关联的,这个主要通过分析哪些内容是由服务器返回的, ...
- wait(),notify(),notifyAll()用来操作线程为什么定义在Object类中?
这些方法存在于同步中: 使用这些方法必须标识同步所属的锁: 锁可以是任意对象,所以任意对象调用方法一定定义在Object类中. Condition是在java 1.5中才出现的,它用来替代传统的Obj ...
- DDOS与DDOS追踪的介绍
我很早前研究anti-DDOS,其中就有追踪一块,可以在这里介绍一些,但是实际上只有很少技术被投入使用了,大多数都还是依然是实验室的东西,已经投入实用的我单独提出来. 追踪技术有: ·链级测试 (Li ...
- 【Codewars】7×7 摩天大楼
介绍 链接:7×7 Skyscrapers C#答案(原因:懒,但是完全可以转成C++):bajdcc/learnstl 题目(机翻): 在7乘7格的网格中,你只想在每个广场上放置一个摩天大楼,只有一 ...
- 【查询优化】怎样用SQL语句查看查询的性能指标
一.SET STATISTICS IO (有关TSQL语句查询所产生的磁盘活动量) --显示有关由Transact-SQL 语句生成的磁盘活动量的信息 SET STATISTICS IO ON -- ...
- 基于HTML5/CSS3图片网格动画特效
现在HTML5技术可以让网页上的图片变得非常神奇,各种各样的HTML5图片动画特效让你眼花缭乱.今天要分享的这款HTML5图片网格动画特效就非常炫酷.图片缩略图按网格的布局一行行排列,你只需点击按钮即 ...