From 35454a087eba2cb01393c935a0e0c8fb4c9a745c Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Tue, 17 Feb 2026 15:17:27 +0100 Subject: [PATCH] PS/2 kb allow only one suspended proc at a time --- kernel/device/ps2_kb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/device/ps2_kb.c b/kernel/device/ps2_kb.c index 3947022..70b7c99 100644 --- a/kernel/device/ps2_kb.c +++ b/kernel/device/ps2_kb.c @@ -215,8 +215,18 @@ int ps2kb_read_key (struct device* device, struct device_op_ctx* op_ctx, void* a /* didn't pop anything */ if (prev_count == new_count) { + spin_lock (&ps2kb_sq.lock); + struct list_node_link* node = ps2kb_sq.proc_list; + spin_unlock (&ps2kb_sq.lock); + + if (node != NULL) { + spin_unlock (&ps2kb_ringbuffer_lock); + return -ST_PERMISSION_ERROR; + } + *op_ctx->reschedule = proc_sq_suspend (op_ctx->proc, &ps2kb_sq, &ps2kb_ringbuffer_lock, op_ctx->reschedule_cpu); + return ST_OK; }