From 801aeb9172136ca93a4603fcf8dcf8e19a1522fe Mon Sep 17 00:00:00 2001 From: nodist Date: Sat, 17 Oct 2026 15:41:01 -0400 Subject: add io_uring --- include/kpl/object.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'include/kpl/object.h') diff --git a/include/kpl/object.h b/include/kpl/object.h index 751088d..1f3ec04 100644 --- a/include/kpl/object.h +++ b/include/kpl/object.h @@ -48,9 +48,18 @@ inline void kpl_object_queue_enqueue(kpl_object_queue *object_queue, void *objec */ void *kpl_object_queue_dequeue(kpl_object_queue *object_queue); -typedef void kpl_task_fn(kpl_task *task, kpl_env *env); +typedef void kpl_task_fn(kpl_object_task *task, kpl_env *env); -typedef struct _kpl_task { - KPL_OBJECT_HEADER(_kpl_task); - // TODO -} kpl_task; +/* + * Coroutine state object + */ +typedef struct _kpl_object_task { + KPL_OBJECT_HEADER(_kpl_object_task); + _Atomic bool join_ready __attribute__((aligned(4))); // shares cache line with variables_size + int32_t variables_size, io_res; // variables_size is set once then only read + uint32_t io_flags; // io_res and io_flags are set by io_uring complete + kpl_object_task *join; + kpl_task_fn *task_fn; + kpl_result result; + kpl_class variables[]; // a task has no distinction between an argument or a local, both live here +} kpl_object_task; -- cgit v1.2.3