fetch_and_add 内核服务

用途

以原子方式递增变量。

语法

#include <sys/atomic_op.h>
int fetch_and_add (addr,  value)
atomic_p addr;
int value;

long fetch_and_addlp (addr,  value)
atomic_l addr;
long value;

参数

描述
addr 指定要增大的变量的地址。
value 指定要添加到变量中的值。

描述

fetch_and_add 内核服务以原子方式递增变量。

fetch_and_add 内核服务在单字 (32 位) 变量上运行,而 fetch_and_addlp 内核服务在双字 (64 位) 变量上运行。

当计数器变量在多个内核线程之间共享时,这些操作很有用,因为它确保了用于递增计数器的访存,更新和存储操作以原子方式发生 (不可中断)。

注意:
  • fetch_and_add 内核服务的单字变量必须在一个字 (32 位) 边界上对齐。
  • fetch_and_addlp 内核服务的双字变量必须在双字 (64 位) 边界上进行对齐。

执行环境

fetch_and_add 内核服务可从 流程中断 环境中调用。

返回值

fetch_and_add 内核服务会返回该变量的原始值。