Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › compiler_rt/ › atomics.zig › atomic_compare_exchange_N
atomic_compare_exchange_N
atomics.atomic_compare_exchange_N
inline fn atomic_compare_exchange_N (
comptime T : type ,
ptr : *T ,
expected : *T ,
desired : T ,
success : i32 ,
failure : i32 ,
) i32
File
Code
inline fn atomic_compare_exchange_N (
comptime T : type ,
ptr : *T ,
expected : *T ,
desired : T ,
success : i32 ,
failure : i32 ,
) i32 {
_ = success ;
_ = failure ;
if (@sizeOf (T ) > largest_atomic_size ) {
var sl = spinlocks .get (@intFromPtr (ptr ));
defer sl .release ();
const value = ptr .*;
if (value == expected .*) {
ptr .* = desired ;
return 1 ;
}
expected .* = value ;
return 0 ;
} else {
if (@cmpxchgStrong (T , ptr , expected .*, desired , .seq_cst , .seq_cst )) |old_value | {
expected .* = old_value ;
return 0 ;
}
return 1 ;
}
}