Linux内核接口特定的类型】的更多相关文章

内核中一些通常使用的数据类型有它们自己的 typedef 语句, 因此阻止了任何移植性问 题. 例如, 一个进程标识符 ( pid ) 常常是 pid_t 而不是 int. 使用 pid_t 屏蔽了任 何在实际数据类型上的不同. 我们使用接口特定的表达式来指一个类型, 由一个库定义的, 以便于提供一个接口给一个特定的数据结构. 注意, 在近期, 已经相对少定义新的接口特定类型. 使用 typedef 语句已经有许多内核 开发者不喜欢, 它们宁愿看到代码中直接使用的真实类型信息, 不是藏在一个用户…
USB 端点被绑在接口中. USB 接口只处理一类 USB 逻辑连接, 例如一个鼠标, 一个键盘, 或者一个音频流. 一些 USB 设备有多个接口, 例如一个 USB 扬声器可能有 2 个接口: 一个 USB 键盘给按钮和一个 USB 音频流. 因为一个 USB 接口表示基本的功能, 每个 USB 驱动控制一个接口; 因此, 对扬声器的例子, Linux 需要 2 个不同的驱动给一个硬 件设备. USB 接口可能有预备的设置, 是对接口参数的不同选择. 接口的初始化的状态是第一个设 置, 0 号…
对于Linux内核发布的版本类型有如下,也是自己的理解: [mainline]:主线版本,由Linux Torvalds维护和发布. [stable/EOL]:稳定版本,每个由主线发布的版本都叫做稳定版本,并且不会有新的特性加入,同时也可以向主线版本提交bug修复和补丁,支持到下一个稳定版本发布:但是,较老的版本不再提供维护将标记为EOL. [longterm]:长期维护版本,从稳定版本分出来进行长期维护,原理和稳定版本一样:有些长期版本能提供十几年之久,同时如果较老的版本不再维护也会标记为EO…
转自:http://www.linuxidc.com/Linux/2013-12/93637.htm 将Linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关.坚持使用严格的数据类型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug. -Wall 显示所有的警告 -Wstrict-prototypes 严格的检测原型,如果不一致,则出现警告 内核数据使用的数据类型主要分为3个类型: 标准C语言类型.确定大小的类型和特定内核对象的类…
Linux内核同步机制之(一):原子操作 http://www.wowotech.net/linux_kenrel/atomic.html 一.源由 我们的程序逻辑经常遇到这样的操作序列: 1.读一个位于memory中的变量的值到寄存器中 2.修改该变量的值(也就是修改寄存器中的值) 3.将寄存器中的数值写回memory中的变量值 如果这个操作序列是串行化的操作(在一个thread中串行执行),那么一切OK,然而,世界总是不能如你所愿.在多CPU体系结构中,运行在两个CPU上的两个内核控制路径同…
一.为何会有rw spin lock? 在有了强大的spin lock之后,为何还会有rw spin lock呢?无他,仅仅是为了增加内核的并发,从而增加性能而已.spin lock严格的限制只有一个thread可以进入临界区,但是实际中,有些对共享资源的访问可以严格区分读和写的,这时候,其实多个读的thread进入临界区是OK的,使用spin lock则限制一个读thread进入,从而导致性能的下降. 本文主要描述RW spin lock的工作原理及其实现.需要说明的是Linux内核同步机制之…
一.为何会有rw spin lock? 在有了强大的spin lock之后,为何还会有rw spin lock呢?无他,仅仅是为了增加内核的并发,从而增加性能而已.spin lock严格的限制只有一个thread可以进入临界区,但是实际中,有些对共享资源的访问可以严格区分读和写的,这时候,其实多个读的thread进入临界区是OK的,使用spin lock则限制一个读thread进入,从而导致性能的下降. 本文主要描述RW spin lock的工作原理及其实现.需要说明的是Linux内核同步机制之…
一 内存管理 默认情况下,运行在Linux系统上的每个进程都有各自的内存页面:进程不能访问其他进程正在使用的内存页面. 内核维护着自己的内存区域 用户进程不能访问内核进程的内存 可以创建一些共享内存页面,多个进程可在同一块共用内存区域进行读取和写入操作:内核负责维护和管理这块共用内存区域并控制每个进程访问这块共享区域. 内核的系统内存管理主要是对1.物理内存和虚拟内存(交换空间)2.共享内存的管理 二 软件程序管理 内核创建第一个进程(init进程)来启动系统上所有其他进程 内核启动时,将ini…
时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 <Linux/param.h>中定义或该文件包含的某个子平台相关文件中.作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ.对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持 HZ 的默认值. 对用户空间,内核HZ几乎完全隐藏,用户 HZ 始终扩展为 100.当用户空间程序包含 param.h,且每个报告给用户空间的计数器都…
一.双向链表list_head Linux内核驱动开发会经常用到Linux内核中经典的双向链表list_head,以及它的拓展接口和宏定义:list_add.list_add_tail.list_del.list_entry.list_for_each等. 在内核源码中,list_head结构体的定义在文件source_code/include/linux/types.h文件中,结构体定义如下: struct list_head { struct list_head *next, *prev;…