fn fileLock(userdata: ?*anyopaque, file: File, lock: File.Lock) File.LockError!void
fn fileLock(userdata: ?*anyopaque, file: File, lock: File.Lock) File.LockError!void { const ev: *Evented = @ptrCast(@alignCast(userdata)); var sync: CancelRegion.Sync = try .init(ev); defer sync.deinit(ev); ev.flock(&sync, file.handle, lock, .blocking) catch |err| switch (err) { error.WouldBlock => unreachable, // blocking else => |e| return e, }; }