Handle ps2 keyboard via special process

This commit is contained in:
2025-09-07 20:53:36 +02:00
parent 4f3053bc8e
commit 9644ad0b4e
16 changed files with 312 additions and 40 deletions

View File

@ -8,6 +8,7 @@
#include "spinlock/spinlock.h"
#include "errors.h"
#include "util/util.h"
#include "kprintf.h"
int32_t SYSCALL5(sys_ipcpipe, pid1, pipenum1, cmd1, buffer1, len1) {
uint64_t pid = pid1;
@ -64,8 +65,34 @@ int32_t SYSCALL5(sys_ipcpipe, pid1, pipenum1, cmd1, buffer1, len1) {
IpcPipe *pipe = proc->pipes[pipenum];
if (pipe == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
ret = ipc_pipewrite(pipe, buffer, len1);
} break;
case IPCPIPE_READ: {
if (pipenum >= PROC_PIPEHANDLES_MAX) {
ret = E_INVALIDARGUMENT;
goto done;
}
uint8_t *const buffer = (uint8_t *const)buffer1;
if (buffer == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
IpcPipe *pipe = proc->pipes[pipenum];
if (pipe == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
ret = ipc_piperead(pipe, buffer, len1);
} break;
default: {
ret = E_INVALIDARGUMENT;
} break;