原子操作指的是在執行過程中不會被別的**路徑所中斷的操作,下面列出原子操作相關的函式
1.void atomic_set(atomic_t *v,int i); //設定原子變數的值為i
2.atomic_t v = atomic_init(0); //定義原子變數v並初始化為0
3.atomic_read(atomic_t *v); //返回原子變數的值
4.void atomic_add(int i,atomic_t *v); //原子變數增加i
5.void atomic_sub(int i,atomic_t *v); //原子變數減少i
6.void atomic_inc(atomic_t *v); //原子變數增加1
7.void atomic_idec(atomic_t *v); //原子變數減少1
8.int atomic_inc_and_test(atomic_t *v); //原子變數執行自增後測試其是否為0,0則返回true
9.int atomic_dec_and_test(atomic_t *v); //原子變數執行自減後測試其是否為0,0則返回true
10.int atomic_sub_and_test(int i,atomic_t *v); //原子變數執行減i後測試其是否為0,0則返回true
11.int atomic_add_return(int i,atomic_t *v); //原子變數執行加i,並返回新值
12.int atomic_sub_return(int i,atomic_t *v); //原子變數執行減i,並返回新值
13.int atomic_inc_return(atomic_t *v); //原子變數執行自增,並返回新值
14.int atomic_dec_return(atomic_t *v); //原子變數執行自減,並返回新值
15.void set_bit(nr,void *addr); //設定addr位址的第nr位(寫1)
16.void clear_bit(nr,void *addr); //清除addr位址的第nr位(寫0)
17.void change_bit(nr,void *addr); //對addr位址的第nr位進行反置
18.test_bit(nr,void *addr); //返回addr位址的第nr位
19.int test_and_set_bit(nr,void *addr); //18+15
20.int test_and_clear_bit(nr,void *addr); //18+16
21.int test_and_change_bit(nr,void *addr); //18+17
Linux 原子操作
所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡 的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomi...
linux 原子操作
所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...
Linux 原子操作
所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...