From 356894bb6e746cff5c6656fb133d8f3cd83cca70 Mon Sep 17 00:00:00 2001 From: Matthias Kruk Date: Mon, 23 Dec 2019 16:32:39 +0900 Subject: [PATCH] Add sys_inb() and sys_outb() syscalls --- include/corax/syscall.h | 3 +++ kernel/core/posixcall.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/corax/syscall.h b/include/corax/syscall.h index ca456c2..07b64cd 100644 --- a/include/corax/syscall.h +++ b/include/corax/syscall.h @@ -27,6 +27,9 @@ #define SYS_MMAP 9 #define SYS_MUNMAP 10 +#define SYS_INB 11 +#define SYS_OUTB 12 + /* Corax-specific variations of POSIX syscalls */ #define SYS_EXECFVE 128 diff --git a/kernel/core/posixcall.c b/kernel/core/posixcall.c index 25ff841..3cbb141 100644 --- a/kernel/core/posixcall.c +++ b/kernel/core/posixcall.c @@ -394,6 +394,18 @@ int sys_mmap(stack_frame_t *stk) return(ret_val); } +int sys_inb(stack_frame_t *stk) +{ + stk->eax = io_inb((u16_t)stk->ebx); + return(0); +} + +int sys_outb(stack_frame_t *stk) +{ + stk->eax = io_outb((u16_t)stk->ebx, (u8_t)stk->ecx); + return(0); +} + int sys_posixcall(stack_frame_t *stk) { int ret_val; @@ -454,6 +466,14 @@ int sys_posixcall(stack_frame_t *stk) ret_val = -ENOSYS; break; + case SYS_INB: + ret_val = sys_inb(stk); + break; + + case SYS_OUTB: + ret_val = sys_outb(stk); + break; + default: ret_val = -EOPNOTSUPP; break; -- 2.47.3