From c1f405c6e49b84577531c8c0cfe08481298d8dc7 Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 11 Jul 2025 12:06:57 -0500 Subject: [PATCH] allow pools to push jobs to any other pool --- src/sys_win32.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sys_win32.c b/src/sys_win32.c index 6b429922..545c3deb 100644 --- a/src/sys_win32.c +++ b/src/sys_win32.c @@ -809,9 +809,10 @@ void sys_run(i32 count, sys_job_func *func, void *sig, enum sys_pool pool_kind, snc_counter_add(counter, count); } struct fiber *fiber = fiber_from_id(sys_current_fiber_id()); - /* A job cannot create a job with a pool / priority than itself */ - pool_kind = clamp_i32(pool_kind, fiber->job_pool, NUM_SYS_POOLS - 1); - priority = clamp_i32(priority, fiber->job_priority, NUM_SYS_PRIORITIES - 1); + priority = clamp_i32(priority, fiber->job_priority, NUM_SYS_PRIORITIES - 1); /* A job cannot create a job with a higher priority than itself */ + if (pool_kind == SYS_POOL_INHERIT) { + pool_kind = fiber->job_pool; + } struct job_pool *pool = &G.job_pools[pool_kind]; struct job_queue *queue = &pool->job_queues[priority]; tm_lock(&queue->lock);