test_bit原子操作


原子位操作

     操作函數的參數是一個指針和一個位號

 

原子位操作定義在文件中。令人感到奇怪的是位操作函數是對普通的內存地址進行操作的。原子位操作在多數情況下是對一個字長的內存訪問,因而位號該位於0-31之間(在64位機器上是0-63之間),但是對位號的范圍沒有限制。

 

原子操作中的位操作部分函數如下:
void set_bit(int nr, void *addr)        原子設置addr所指的第nr位
void clear_bit(int nr, void *addr)      原子的清空所指對象的第nr位
void change_bit(nr, void *addr)         原子的翻轉addr所指的第nr位
int test_bit(nr, void *addr)            原子的返回addr位所指對象nr位
int test_and_set_bit(nr, void *addr)    原子設置addr所指對象的第nr位,並返回原先的值
int test_and_clear_bit(nr, void *addr)  原子清空addr所指對象的第nr位,並返回原先的值
int test_and_change_bit(nr, void *addr)  原子翻轉addr所指對象的第nr位,並返回原先的值

 

    unsigned long word = 0;

    set_bit(0, &word); /*第0位被設置*/

    set_bit(1, &word); /*第1位被設置*/

    clear_bit(1, &word); /*第1位被清空*/

    change_bit(0, &word); /*翻轉第0位*/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM