fn yield(ev: *Evented, maybe_ready_fiber: ?*Fiber, pending_task: SwitchMessage.PendingTask) void
fn yield(ev: *Evented, maybe_ready_fiber: ?*Fiber, pending_task: SwitchMessage.PendingTask) void { const thread: *Thread = .current(); const ready_context = if (maybe_ready_fiber orelse ev.findReadyFiber(thread)) |ready_fiber| &ready_fiber.context else &thread.idle_context; const message: SwitchMessage = .{ .contexts = .{ .old = thread.current_context, .new = ready_context, }, .pending_task = pending_task, }; contextSwitch(&message).handle(ev); }