博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux位操作API
阅读量:4061 次
发布时间:2019-05-25

本文共 1008 字,大约阅读时间需要 3 分钟。

linux  3.18

在linux内核中有很多位运算函数,如:set_bit,clear_bit,clear_bit,test_and_set_bit等等。

1. set_bit
static inline void  set_bit(unsigned int nr, volatile unsigned long *addr)  
在起始地址为addr的位图中设置第nr位;是原子操作。
2. __set_bit
static inline void  set_bit(unsigned int nr, volatile unsigned long *addr)  
       在起始地址为addr的位图中设置第nr位;非原子操作。
3. clear_bit
static inline void  clear_bit(int nr, volatile unsigned long *addr)  
       清除起始地址为addr的位图中的第nr位,改操作是原子操作但不具有加锁功能,若要用于加锁目的,应当调用smp_mb__before_clear_bit 或smp_mb__after_clear_bit函数,以确保任何改变在其他的处理器上是可见的。
4. change_bit
static inline void change_bit(int nr, volatile unsigned long *addr)  
       在起始地址为addr的位图中改变第nr位;
5. test_and_set_bit
static inline int test_and_set_bit(int nr, volatile unsigned long *addr)    
       在起始地址为addr的位图中设置第nr位;并返回原来的值,原子操作。
6. test_and_clear_bit
static inline int test_and_clear_bit(int nr, volatile unsigned long *addr)  
       在起始地址为addr的位图中清除第nr位;并返回原来的值,原子操作。
7. test_and_change_bit
static inline int test_and_change_bit(int nr, volatile unsigned long *addr)  
       在起始地址为addr的位图中更改第nr位;并返回原来的值,原子操作。     

转载地址:http://ulbji.baihongyu.com/

你可能感兴趣的文章
Java技术路线图
查看>>
Java学习的30个目标
查看>>
Spring2.5+MINA2搭建Socket Server
查看>>
jcharts画线图,饼图和柱状图
查看>>
DOS 命令大全
查看>>
linux nc 端口转发
查看>>
less 快速入门(一)
查看>>
less语言特性(二)
查看>>
less函数手册(三)
查看>>
less入门教程一
查看>>
less入门教程二
查看>>
less入门教程三(函数手册)
查看>>
监控服务器端口,Down掉会自动重启,并发送邮件 Linux Shell
查看>>
git clone 地址 时,出现错误解决方案
查看>>
二维码生成及解析类
查看>>
生成二维码 及 添加外边框和中间logo
查看>>
Git提交错误:RPC failed; result=22, HTTP code = 411
查看>>
Druid使用ConfigFilter
查看>>
Elicpse使用技巧-打开选中文件文件夹或者包的当前目录
查看>>
eclips 运行项目内存不足的解决方案
查看>>