From: Matthias Kruk Date: Mon, 23 Dec 2019 07:32:39 +0000 (+0900) Subject: Add sys_inb() and sys_outb() syscalls X-Git-Url: https://git.corax.cc/?a=commitdiff_plain;h=356894bb6e746cff5c6656fb133d8f3cd83cca70;p=corax Add sys_inb() and sys_outb() syscalls --- 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;