
【Linux kernel】
快乐安卓
这个作者很懒,什么都没留下…
展开
-
kernel启动流程概要
一:内核Image的组成1 ES(Embed System)启动的时候,CPU加电,执行的第一条语句是Bootloader,这个非常类似PC机上的BIOS。BL将内核加载后,控制器移交给LK2 LK执行的第一条语句是什么?vmlinux是单体的内核表示。根据前面说的内核编译连接知识,第一条语句是head.S中(历史原因,MD,有很多文件都叫head.S) 我们需要重新分析一下内核(这里转载 2012-11-07 11:04:54 · 1812 阅读 · 0 评论 -
Linux源代码目录树结构
Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间。 源代码所有在目录:/usr/src/linux (大部分linux发行版本中) init 内核初始化代码 kernel 内核核心部分:进程、定时、程序执行、信号、模块。。。 mm 内存处理 arch 平台相原创 2012-10-19 16:00:19 · 1176 阅读 · 0 评论 -
Linux内核中的xx_initcall初始化标号
初始化标号先看这些宏的定义(定义在文件include/linux/init.h中)#define pure_initcall(fn) __define_initcall("0",fn,0)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initca原创 2012-11-14 10:39:49 · 1034 阅读 · 0 评论 -
Linux IO控制命令生成
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit16 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内原创 2013-07-15 09:08:32 · 2927 阅读 · 0 评论 -
Linux文件系统Inotify机制
Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。它是一个内核用于通知用户空间程序文件系统变化的机制。开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件,inotif原创 2013-11-01 09:38:43 · 5952 阅读 · 1 评论 -
Linux系统IO复用接口(select、poll、epoll)
epoll仅仅是一个异步事件的通知机制,其本身并不作任何的IO读写操作,它只负责告诉你是不是可以读或可以写了,而具体的读写操作,还要应用程序自己来完成。epoll仅提供这种机制是非常好的,它保持了事件通知与IO操作之间彼此的独立性,使得epoll的使用更加灵活。原创 2013-11-04 09:14:30 · 5778 阅读 · 1 评论 -
Linux进程间通信方式之管道(pipe)
每个进程各自有独立的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,但是所有进程都共享内核地址空间,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,Inter Process Communication)。如下图所示。原创 2013-11-04 08:18:12 · 8784 阅读 · 0 评论