fn fileUnlock(userdata: ?*anyopaque, file: File) void
fn fileUnlock(userdata: ?*anyopaque, file: File) void { const ev: *Evented = @ptrCast(@alignCast(userdata)); var sync: CancelRegion.Sync = .initBlocked(ev); defer sync.deinit(ev); ev.flock(&sync, file.handle, .none, .blocking) catch |err| switch (err) { error.Canceled => unreachable, // blocked error.WouldBlock => unreachable, // blocking error.SystemResources => return recoverableOsBugDetected(), // Resource deallocation. error.FileLocksUnsupported => return recoverableOsBugDetected(), // We already got the lock. error.Unexpected => return recoverableOsBugDetected(), // Resource deallocation must succeed. }; }