Format
#include <builtin.h>unsigned int __xadd4(unsigned int *op1, unsigned int op2)
Language Level: None
__xadd4 exchanges the 4 byte memory operand, *op1, with
the 4 byte immediate operand, op2, and stores the sum of
the two values in the memory operand. The exchange and add
operation is only atomic on uni-processor machines. This builtin
function will not work on a 386 processor.
Return Value
The original value of the memory operand is returned.
Example
This example adds 1 to the value of mem and
prints out the original value of mem.
#include <stdio.h> #include <builtin.h>
unsigned int mem = -1;
int main(void)
{
if (__xadd4(&mem, 1) == -1)
{
printf("Memory location should now be zero.\n");
}
printf("mem = %u\n", mem);
/***************************************
The output should be:
Memory location should now be zero.
mem = 0
***************************************/
return 0; }
![]()
__smp_xadd4
-- Exchange and Add 4 Byte Values Atomically