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.

pthread_spin_lock

pthread.pthread_spin_lock
fn pthread_spin_lock(s: *c.pthread_spinlock_t) callconv(.c) c_int

File

lib/c/pthread.zig:41

Code

fn pthread_spin_lock(s: *c.pthread_spinlock_t) callconv(.c) c_int {
    const spin: *SpinLock = @ptrCast(s);
    if (builtin.single_threaded and @atomicLoad(SpinLock, spin, .monotonic) == .locked) return @backingInt(c.E.DEADLK);

    while (@cmpxchgWeak(SpinLock, spin, .unlocked, .locked, .acquire, .monotonic)) |_| {
        std.atomic.spinLoopHint();
    }
    return 0;
}