xchg作用
时间:2009-03-20 来源:wbslinux
#define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long) \ |
它只是将第二个参数x放入寄存器中与第一个指针参数所指的内容交换,返回所指内容原先的值。谈不上两数交换值。但是它可以“原子”的设置ptr所指内容并取出原值,这正是我们想要的。
可以参考一下下面小程序的结果:
#include <asm/system.h>
int main()
{
int i = 1,j = 2;
printf("i=%d, j=%d\n", i, j);
printf("xchg:%d\n", xchg(&i, j));
printf("i=%d, j=%d\n", i, j);
return 0;
}
结果为:
i=1, j=2
xchg:1
i=2, j=2