From 3ecfb0ffb910ea628033dbfe61a1e7794d351945 Mon Sep 17 00:00:00 2001 From: wnstngs <64602598+wnstngs@users.noreply.github.com> Date: Wed, 23 Sep 2026 16:28:45 +0300 Subject: [PATCH] kernel: detach all event listener attachments --- kernel-src/include/kernel/event.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel-src/include/kernel/event.h b/kernel-src/include/kernel/event.h index ec0f1dc2..7d64a9b4 100644 --- a/kernel-src/include/kernel/event.h +++ b/kernel-src/include/kernel/event.h @@ -16,18 +16,21 @@ typedef struct { #define EVENT_INITLISTENER(e) { \ poll_initdesc(&(e)->polldesc, 0); \ (e)->polldesc.data = (e)->polldata; \ + (e)->polldesc.size = EVENT_MAX_ATTACHMENT; \ (e)->current = 0; \ - for (int i = 0; i < EVENT_MAX_ATTACHMENT; ++i) \ + for (int i = 0; i < EVENT_MAX_ATTACHMENT; ++i) { \ (e)->polldata[i].desc = &(e)->polldesc; \ + (e)->polldata[i].header = NULL; \ + } \ } #define EVENT_ATTACH(e, h) { \ - poll_add(h, &(e)->polldata[(e)->current++], POLLPRI); \ if ((e)->current >= EVENT_MAX_ATTACHMENT) { \ /* spin forever to say that there have been too many attachments */ \ /* this should never happen normally and is meant as a way to alert whoever is programming about it */ \ for (;;) asm volatile(""); \ } \ + poll_add(h, &(e)->polldata[(e)->current++], POLLPRI); \ } #define EVENT_WAIT(e, t) poll_dowait(&(e)->polldesc, t)