From 164dda0bdc2856b470d3607f1cea33f430c15766 Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Mon, 24 Mar 2025 22:13:09 -0400 Subject: [PATCH 1/2] Add custom ebus event type with void * data --- src/ebus/include/ebus.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ebus/include/ebus.h b/src/ebus/include/ebus.h index 869fb248..3ba196d0 100644 --- a/src/ebus/include/ebus.h +++ b/src/ebus/include/ebus.h @@ -24,6 +24,7 @@ enum EBUS_EVENT { EBUS_EVENT_ANY = 0, EBUS_EVENT_TIMER, EBUS_EVENT_KEY, + EBUS_EVENT_CUSTOM, }; typedef struct _ebus_event { @@ -41,6 +42,11 @@ typedef struct _ebus_event { uint32_t keycode; uint32_t scancode; } key; + struct { + int id; + void * data; + size_t size; + } custom; }; } ebus_event_t; From 99999bbc26420b609dd15e0f6384591ccf96579c Mon Sep 17 00:00:00 2001 From: Thomas Harrison Date: Mon, 24 Mar 2025 22:13:37 -0400 Subject: [PATCH 2/2] Alloc process_t for foo and bar tasks in kernel --- src/kernel/src/kernel.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/kernel/src/kernel.c b/src/kernel/src/kernel.c index 8fe5c3c2..e59ac537 100644 --- a/src/kernel/src/kernel.c +++ b/src/kernel/src/kernel.c @@ -160,21 +160,21 @@ void kernel_main() { KPANIC("Failed to open tar"); } - process_t foo_proc; - if (process_create(&foo_proc)) { + process_t * foo_proc = kmalloc(sizeof(process_t)); + if (process_create(foo_proc)) { KPANIC("Failed to create foo task"); } - process_set_entrypoint(&foo_proc, foo_task); - foo_proc.state = PROCESS_STATE_LOADED; - pm_add_proc(&__kernel.pm, &foo_proc); + process_set_entrypoint(foo_proc, foo_task); + foo_proc->state = PROCESS_STATE_LOADED; + pm_add_proc(&__kernel.pm, foo_proc); - process_t bar_proc; - if (process_create(&bar_proc)) { + process_t * bar_proc = kmalloc(sizeof(process_t)); + if (process_create(bar_proc)) { KPANIC("Failed to create bar task"); } - process_set_entrypoint(&bar_proc, bar_task); - bar_proc.state = PROCESS_STATE_LOADED; - pm_add_proc(&__kernel.pm, &bar_proc); + process_set_entrypoint(bar_proc, bar_task); + bar_proc->state = PROCESS_STATE_LOADED; + pm_add_proc(&__kernel.pm, bar_proc); pm_resume_process(&__kernel.pm, __kernel.pm.idle_task->pid, 0);