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 › std/ › heap/ › FixedBufferAllocator.zig › threadSafeFree
threadSafeFree
FixedBufferAllocator.threadSafeFree
fn threadSafeFree (ctx : *anyopaque , memory : []u8 , alignment : mem .Alignment , ret_addr : usize ) void
File
Code
fn threadSafeFree (ctx : *anyopaque , memory : []u8 , alignment : mem .Alignment , ret_addr : usize ) void {
const fba : *FixedBufferAllocator = @ptrCast (@alignCast (ctx ));
_ = alignment ;
_ = ret_addr ;
assert (memory .len > 0 );
const cur_end_index = @atomicLoad (usize , &fba .end_index , .monotonic );
if (fba .buffer .ptr + cur_end_index != memory .ptr + memory .len ) {
return ;
}
const new_end_index = cur_end_index - memory .len ;
assert (fba .buffer .ptr + new_end_index == memory .ptr );
_ = @cmpxchgStrong (
usize ,
&fba .end_index ,
cur_end_index ,
new_end_index ,
.release ,
.monotonic ,
);
}