test_bit、set_bit和clear_bit
2015-10-24 02:01
1426 查看
//将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);
}
相关文章推荐
- OMAP3630 Linux I2C总线驱动分析
- Linux设备驱动开发环境的搭建
- 迅为4412开发板Linux驱动教程/硬件知识及原理图的使用
- 设备控制接口(ioctl 函数) 主要是在驱动中
- Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver 驱动问题处理办法
- NAPI
- 嵌入式linux和嵌入式android系统有什么区别和联系?
- struct file结构体
- Linux设备驱动之简单字符设备驱动开开发
- Fedora 20 上安装基于dell 1420的无线网卡驱动
- 记得感激我 评论我 nvidia显卡驱动linux系统地安装 完全驱动方法 世界第一人
- pwm驱动程序及其注释
- pwm驱动程序及其注释
- 在使用SIS M672+SIS 968芯片组,SIS Mirage 3+集成显卡的电脑上安装Debian 7.7的驱动
- Bus--device--driver驱动模型源码分析
- linux驱动---DMA操作---驱动编写
- linux驱动---DMA操作---寄存器分析
- linux驱动
- Linux驱动程序开发 - 字符设备驱动