fn fileUnlock(userdata: ?*anyopaque, file: File) void
fn fileUnlock(userdata: ?*anyopaque, file: File) void { const ev: *Evented = @ptrCast(@alignCast(userdata)); _ = ev; while (true) switch (c.errno(c.flock(file.handle, c.LOCK.UN))) { .SUCCESS => return, .INTR => {}, .AGAIN => return recoverableOsBugDetected(), // unlocking can't block .BADF => return recoverableOsBugDetected(), // File descriptor used after closed. .INVAL => return recoverableOsBugDetected(), // invalid parameters .NOLCK => return recoverableOsBugDetected(), // Resource deallocation. .OPNOTSUPP => return recoverableOsBugDetected(), // We already got the lock. else => return recoverableOsBugDetected(), // Resource deallocation must succeed. }; }