![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux kernel 基础知识
文章平均质量分 90
fishOnFly
致知于行...
展开
-
Linux内核基础--事件通知链(notifier chain)
内核通知链 1.1. 概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notificationchain)。 通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件的通知。组成内核的核心系统代码均位于kernel原创 2012-10-16 22:01:16 · 21562 阅读 · 2 评论 -
Linux内核启动分析(上)
Figure 1.1 内核启动顺序 一切都是从你摁下电源摁钮时开始。首先是主板初始化自身的固件--芯片组还有一些附件,接着尝试让CPU工作。如果这个时候有意外发生,你的电脑恐怕只剩电扇在那独自空转了。此时主板可能会发出刺耳的鸣叫提醒你注意:嗨,伙计CPU这家伙不工作啦! 好的到这时CPU可能已经正常工作了,如果是多核CPU,那么会随机的选择其中的一个来当做BSP原创 2012-11-16 11:51:35 · 1999 阅读 · 0 评论 -
Linux内核启动分析(中)
Linux内核启动分析(中) 0. linux-3.2.0-32 1. bzImage由setup和vmlinux两部分组成,setup是实模式下的代码,vmlinux是保护模式下的代码。 2. BIOS把Boot Loader加载到0x7C00的地方并跳转到这里继续执行之后,BootLoader就会把实模式代码setup加载到0x07C00之上的某个地址上,其中setup的前512个字节是原创 2012-11-16 23:33:51 · 2740 阅读 · 0 评论 -
Linux内核--各种宏定义
1. asmlinkage宏 #define asmlinkage __attribute__((regparm(0))). 解释:gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage。 跟asmlinkage相对原创 2013-07-09 17:34:53 · 2498 阅读 · 0 评论