Handle ps2 keyboard via special process
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user