
Linux 内核
安瑾随风
这个作者很懒,什么都没留下…
展开
-
mmap函数详解
mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。 #include void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off); int munmap(void *addr, size_t转载 2012-07-10 13:18:38 · 2563 阅读 · 0 评论 -
Linux 信号signal处理机制
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出转载 2013-12-27 14:58:20 · 640 阅读 · 0 评论 -
详解Linux内核双向循环链表算法的实现(上)
开发平台:Ubuntu11.04 编译器:gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 内核源码:linux-2.6.38.8.tar.bz2 据我们所知,单链表只有一个指向其直接后继的指针域,而且只能从某个结点出发顺着指针域往后寻查其他结点。若要寻查结点的直接前趋,则需要从头指针重新开始。为了克服单链表这种单原创 2012-07-20 09:16:42 · 636 阅读 · 0 评论 -
详解Linux内核双向循环链表算法的实现(下)
2、双向链表在Linux内核中的实现 Linux内核对双向循环链表的设计非常巧妙,链表的所有运算都基于只有两个指针域的list_head结构体来进行。 /* linux-2.6.38.8/include/linux/types.h */ struct list_head { struct list_head *next, *prev; }; 链原创 2012-07-20 09:17:48 · 666 阅读 · 0 评论 -
linux内核container_of宏定义分析
一、#define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE *)0)->MEMBER ) 1. ( (TYPE *)0 ) 将零转型为TYPE类型指针; 2. ((TYPE *)0)->MEMBER 访问结构中的数据成员; 3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 4.(size_t)(&(((TYPE*)0原创 2013-06-07 09:54:09 · 653 阅读 · 0 评论 -
__user && address_space(1)
所有的内核代码,基本都包含了linux\compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。 首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在这里,是因为汇编代码里,不会用到类似于__user这样的属性转载 2012-07-20 09:31:02 · 2572 阅读 · 0 评论 -
linux设备号之操作
在Linux设备驱动中,设备号设一个很重要的概念和变量。不论是主设备号,还是次设备号,在设备驱动中都占据了很重要的地位。那么他在Kernel中是如何操作的?这个数据结构都是通过那些函数可以很容易的在我们写Linux设备驱动模块时被我们所使用呢? 在include/linux/type.h文件中我们能看到一个关于dev_t的定义如下: ... typedef __u32 __ker原创 2012-07-20 09:26:24 · 685 阅读 · 0 评论 -
Linux 中的 Workqueue 机制
什么是 workqueue ? Linux 中的 Workqueue 机制就是为了简化内核线程的创建。通过调用 workqueue 的接口就能创建内核线程。并且可以根据当前系统 CPU 的个数创建线程的数量,使得线程处理的事务能够并行化。 workqueue 是内核中实现简单而有效的机制,他显然简化了内核 daemon 的创建,方便了用户的编程, Workqueue原创 2012-07-17 10:14:23 · 554 阅读 · 0 评论 -
Image uImage与zImage的区别
(1)、内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImag转载 2013-12-06 18:38:43 · 613 阅读 · 0 评论