test_bit、set_bit和clear_bit
来源:互联网 发布:mac 外接显卡坞价格 编辑:程序博客网 时间:2024/05/24 20:08
//将addr的第nr(nr为0-31)位置值置为1;
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为1的位数
extern __inline__ int set_bit(int nr,int * addr)
{
int mask, retval;
addr += nr >> 5; //nr大于31时,把高27的值做为当前地址的偏移,
mask = 1 << (nr & 0x1f); //获取31范围内的值,并把1向左偏移该位数
cli(); //关所有中断
retval = (mask & *addr) != 0; //位置置1
*addr |= mask;
sti(); //开所有中断
return retval; //返回置数值
}
//将addr的第nr(nr为0-31)位置值置为0;
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为0的位数;
extern __inline__ int clear_bit(int nr, int * addr)
{
int mask, retval;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
cli();
retval = (mask & *addr) != 0;
*addr &= ~mask;
sti();
return retval;
}
//判断addr的第nr(nr为0-31)位置的值是否为1;
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要判断的位数;
extern __inline__ int test_bit(int nr, int * addr)
{
int mask;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
return ((mask & *addr) != 0);
}
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为1的位数
extern __inline__ int set_bit(int nr,int * addr)
{
int mask, retval;
addr += nr >> 5; //nr大于31时,把高27的值做为当前地址的偏移,
mask = 1 << (nr & 0x1f); //获取31范围内的值,并把1向左偏移该位数
cli(); //关所有中断
retval = (mask & *addr) != 0; //位置置1
*addr |= mask;
sti(); //开所有中断
return retval; //返回置数值
}
//将addr的第nr(nr为0-31)位置值置为0;
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为0的位数;
extern __inline__ int clear_bit(int nr, int * addr)
{
int mask, retval;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
cli();
retval = (mask & *addr) != 0;
*addr &= ~mask;
sti();
return retval;
}
//判断addr的第nr(nr为0-31)位置的值是否为1;
//nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要判断的位数;
extern __inline__ int test_bit(int nr, int * addr)
{
int mask;
addr += nr >> 5;
mask = 1 << (nr & 0x1f);
return ((mask & *addr) != 0);
}
0 0
- test_bit、set_bit和clear_bit
- set_bit、clear_bit、wait_on_bit_lock、wake_up_bit整理
- test_bit
- set_bit()
- set_bit()
- set_bit()
- linux arm set_bit分析
- 内核当中的test_bit宏
- 关于bit操作(bit_set test_bit)
- linux kernel set_bit() 函数解析
- set_bit(nr,p)函数分析
- 九、set_bit(int nr,long * addr)
- set_bit(unsigned int bit,volatile unsigned long *p)研究
- set_bit() 等位函数分析! \linux-1.0\linux\include\asm\bitops.h
- . 和 ->
- || 和&&
- .和::
- “?”和“!”
- mysql -u root -p 出错(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/li)
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-15-Advanced Activation Layers
- React-Native android在windows下的踩坑记
- C++常见容器概述
- 开始灌水了
- test_bit、set_bit和clear_bit
- 使用OpenGL的变换反馈(transform feedback)构造粒子系统
- spring的常用注解以及什么叫IOC
- 端口操作
- java查询语句包含中文获取不到数据库数据
- rbegin()和rend()
- C++调用python
- leetcode之Invert Binary Tree
- 5.2的Dr.com客户端启动不了,3.7的客户端提示本机未安装TCPIP协议