全部博文(86)
发布时间:2015-08-07 16:46:00
?在通用块层中,bio用来描述单一的I/O请求,它记录了一次I/O操作所必需的相关信息,如用于I/O操作的数据缓存位置,I/O操作的块设备起始扇区,是读操作还是写操作等等。struct bio的定义如下......【阅读全文】
发布时间:2015-08-07 15:41:01
首先,我们先来了解一个块设备是如何表示的。描述块设备的数据结构有两个,一个是struct block_device,用来描述一个块设备或者块设备的一个分区;另一个是struct gendisk,用来描述整个块设备的特性。对于一个包含多个分区的块设备,struct block_device结构有多个,而struct gendisk结构永远只有一个。......【阅读全文】
发布时间:2015-08-05 19:15:00
1. 下面公式将一个字的最右侧的1位改为0位,如果没有1位则生成所有的位都为0的字(例如:0101 1000=>0101 0000)
x & (x - 1)
2. 下面的公式可以用来检测一个无符号整数是否为2^n - 1的形式(包括0和所有位均为1的情况):
x & (x + 1)
3. 使用下面的公式析出(isolate)最右侧的1位,如果没有1位则生成所有位均为0的字(如:0101 1000=>0000 1000):
x & (-x)
4. 使用下面的公式析出最右侧的0位,如果没有0位则生成所有位均为0的字(如:1010 0111=>0000 1000):
~x & (-x)
/* 将一个字的最右侧的1位改成0
* 若无1则生成所有位都为0的字
* 例:01011000 -> 01010000
* 可用来检测一个......【阅读全文】
发布时间:2015-08-05 19:07:35
基础知识:
*(1)linux内核中的网络子系统被设计成完全与协议无关,该思想应用于网络协议(IP、IPX及其他协议)
* 和硬件协议中(以太网、令牌环等),内核与网络驱动程序之的交互,可能每次处理的是一个网络数据包;
* 协议隐藏在驱动程序之后,同时物理传输又被隐藏在协议之后。
*
*(2)linux网络接口没有/dev目录下的设备文件,网络接口存在于它们自己的名字空间,并导出一系列不同的操作。
*
*(3)linux网络划分为4层,依次是网络协议接口层、网络设备接口层、设备驱动功能层和网络设备与媒介层:
*
* 网络协议接口层:它向网络层协议提供统一的数据包收发接口,不论上层协议为ARP还是IP,
* 都通过dev_queue_xmit()函数发送??5B0据,并通过netif_rx()函数接收数据
*
* 网络设备接口层:它向协议接口提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器
......【阅读全文】