Linux IDR机制【转】】的更多相关文章

转自:https://blog.csdn.net/av_geek/article/details/49640433 IDR机制在Linux内核中指的是整数ID管理机制. 实质上来讲,这就是一种将一个整数ID号和一个指针关联在一起的机制. 这个机制最早在03年2月加入内核,当时作为POSIX定时器的一个补丁.现在,内核中很多地方都可以找到它的身影. IDR机制原理: IDR机制适用在那些需要把某个整数和特定指针关联在一起的地方.例如,在IIC总线中,每个设备都有自己的地址,要想在总线上找到特定的设…
idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制.这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁.现在,在内核的很多地方都可以找到idr的身影. idr机制适用在那些需要把某个整数和特定指针关联在一起的地方.举个例子,在I2C总线中,每个设备都有自己的地址,要想在总线上找到特定的设备,就必须要先发送该设备的地址.如果我们的PC是一个I2C总线上的主节点,那么要访问总线上的其他设备,首先要知道他们的ID…
 最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制. IDR(integer ID management)的要完成的任务是给要管理的对象分配一个唯一的ID,于是可以通过这个数字找到要管理的对象. 应用IDR机制时要包含头文件<linux/idr.h>. struct idr { struct idr_layer *top; //idr的top层,可以方便的理解为根节点. struct idr_layer *id_free; //id_free为首的形成…
idr机制解决了什么问题?为什么需要idr机制(或者说,idr机制这种解决方案,相对已有的其他方案,有什么优势所在) ? idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制. 假设我们的代码内需要将一个设备的ID号和描述该设备信息的结构体联系,我们应该怎么做? 最简单的方法当然是通过数组(在当前场景下准确说,是结构体数组,每个数组元素包含一个ID和一个指针.但是结构体数组,依然是数组!)进行索引, 但如果ID号的范围很大(比如32位表…
Linux模块机制浅析   Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! 我们通过创建一个简单的模块进行测试.首先是源文件main.c和Makefile. florian@florian-pc:~/module$ cat main.c #include<linux/module.h> #include<linux/init.h> static int __…
Linux uevent机制 Uevent是内核通知android有状态变化的一种方法,比如USB线插入.拔出,电池电量变化等等.其本质是内核发送(可以通过socket)一个字符串,应用层(android)接收并解释该字符串,获取相应信息. 一.Kernel侧: UEVENT的发起在Kernel端,主要是通过函数 int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,char *envp_ext[]) 该函…
在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止.如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过串口.显示器可以查看消息,只要程序运行,通过GDB调试工具即可捕捉产生segment fault的具体原因.但是不知大家有没有想法,当程序运行在嵌入式设备上时,你所面临资源的缺乏,你没有串口打印信息,没有显示器可查看,你不知道程序运行的状态,如果程序的产生segment falut这种bug发生的周…
Linux 内存机制详解宝典 在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序.或是读取刚存取过得数据会比较快. 一. 我们先来查看一个内存使用的例子: [oracle@db1 ~]$ free -m total       used       free     shared    buffers     cached Mem:        72433    …
转自:http://www.cnblogs.com/lisperl/archive/2012/05/03/2480573.html 由于Linux内核提供了PID,IPC,NS等多个Namespace,一个进程可能属于多个Namespace.为了task_struct的精简,内核引入了struct nsproxy来统一管理进程所属的Namespace,在task_struct中只需存一个指向struct nsproxy的指针就行了.struct nsproxy定义如下: struct nspro…
转自:http://www.cnblogs.com/lisperl/archive/2012/05/03/2480316.html Linux Namespaces机制提供一种资源隔离方案.PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace.每个Namespace里面的资源对其他Namespace都是透明的.要创建新的Namespace,只需要在调用clone时指定相应的flag.Linux Namespaces机制为实现基于容器的虚拟化技术提供了很好的基础…