scheduler: wake canceled tasks

This commit is contained in:
2026-06-04 17:49:53 +02:00
parent fe1acaee8c
commit f90d4d883d
2 changed files with 11 additions and 9 deletions
+2 -2
View File
@@ -147,8 +147,8 @@ pub fn despawn(self: *Node, id: TaskID) void {
self.scheduler.despawnNested(id);
}
pub fn cancel(self: *Node, id: TaskID) !void {
try self.scheduler.cancel(id);
pub fn cancel(self: *Node, id: TaskID) void {
self.scheduler.cancel(id);
}
pub fn checkCancel(self: *Node) !void {
+9 -7
View File
@@ -384,14 +384,16 @@ pub fn wait(self: *Scheduler, ids: []const TaskID) !TaskID {
}
}
pub fn cancel(self: *Scheduler, id: TaskID) !void {
const child = self.findTaskByID(id)
orelse return error.InvalidHandle;
if (child.parent_id != self.current_id)
return error.InvalidHandle;
pub fn cancel(self: *Scheduler, id: TaskID) void {
const child = self.findTaskByID(id) orelse return;
std.debug.assert(child.parent_id == self.current_id);
child.cancel = true;
if (child.state == .blocked) {
child.state = .ready;
child.wakeup_time = null;
child.wakeup_tasks = null;
child.wakeup_futex = null;
}
}
pub fn checkCancel(self: *Scheduler) !void {