bitops.h.txt

来自「linux内核学习笔记 希望想看的人可以很快下载到」· 文本 代码 · 共 61 行

TXT
61
字号
any problems,send mails to sindybear@163.com


相关文件
	


这个文件主要定义位操作,使用一些cpu所拥有的条件对位操作可以进行一系列的优化。


***********************ext2文件系统所使用的位操作******************************
#define ext2_find_first_zero_bit     find_first_zero_bit	//定义ext2文件系统使用的函数
#define ext2_find_next_zero_bit      find_next_zero_bit		

#define ext2_set_bit                 __test_and_set_bit
#define ext2_clear_bit               __test_and_clear_bit
#define ext2_test_bit                test_bit
*******************************************************************************


************************位查找基本函数*****************************************
(1)static __inline__ int find_first_zero_bit(void * addr, unsigned size)
	//这个函数用于发现一个给定的内存空间中第一个为零的位
	//参数addr是开始搜索的位置
	//参数size是搜索的范围
	//返回值是那个位的地方,如第1338位,不是以byte计算

(2)static __inline__ int find_first_bit(void * addr, unsigned size)
	//这个函数和上面的相似,区别在于它寻找第一个为一的位
	//其余类似

(3)static __inline__ int find_next_zero_bit (void * addr, int size, int offset)
	//也是寻找第一个为零的位,不过多了一个偏移量,也就是从偏移量开始的位置搜索。
	//其余类似

(4)static __inline__ int find_next_bit (void * addr, int size, int offset)
	//也是寻找第一个为一的位,不过多了一个偏移量,也就是从偏移量开始的位置搜索。
*******************************************************************************


************************位置位函数*********************************************
(1)static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
	//在给定的地址上,给第nr个位置为一,返回值时原来的老值,非原子操作

(2)static __inline__ int __test_and_clear_bit(int nr, volatile void * addr)
	//清除一个位,和上面的函数正好相反,非原子操作

(3)static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
	//和函数2一样的功能,不过这个函数执行的是原子操作
*******************************************************************************










⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?