From 68915f46e66ed65ce2d32009fdfa2f5dca116842 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Tue, 10 Dec 2019 21:47:41 +0100 Subject: Some syscalls and userspace stuff sorry for the worse-getting commit messages... --- src/kernel/syscall/actions/sys_paging_alloc.c | 10 ++++++++++ src/kernel/syscall/actions/sys_paging_free.c | 8 ++++++++ src/kernel/syscall/actions/sys_read.c | 8 ++++++-- src/kernel/syscall/actions/sys_write.c | 8 +++----- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/kernel/syscall/actions/sys_paging_alloc.c create mode 100644 src/kernel/syscall/actions/sys_paging_free.c (limited to 'src/kernel/syscall/actions') diff --git a/src/kernel/syscall/actions/sys_paging_alloc.c b/src/kernel/syscall/actions/sys_paging_alloc.c new file mode 100644 index 0000000..fb4e415 --- /dev/null +++ b/src/kernel/syscall/actions/sys_paging_alloc.c @@ -0,0 +1,10 @@ +#include +#include +#include + +uint32_t sys_paging_alloc(uint32_t count) +{ + uint32_t ptr = paging_alloc_pages((uint32_t) count); + paging_set_user(ptr, count); + return ptr; +} \ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_paging_free.c b/src/kernel/syscall/actions/sys_paging_free.c new file mode 100644 index 0000000..cdf7bb1 --- /dev/null +++ b/src/kernel/syscall/actions/sys_paging_free.c @@ -0,0 +1,8 @@ +#include +#include + +uint32_t sys_paging_free(uint32_t virt, uint32_t count) +{ + paging_set_free(virt, count); + return count; +} \ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_read.c b/src/kernel/syscall/actions/sys_read.c index f04f3ef..02960f6 100644 --- a/src/kernel/syscall/actions/sys_read.c +++ b/src/kernel/syscall/actions/sys_read.c @@ -3,6 +3,7 @@ #include #include #include +#include uint32_t sys_read(char *buf) { @@ -15,7 +16,10 @@ uint32_t sys_read(char *buf) return strlen(buf); } -uint32_t sys_readc() +uint32_t sys_readc(char *ch) { - return getch(); + char buf = getch(); + ch = &buf; + serial_put(*ch); + return (uint32_t) ch; } \ No newline at end of file diff --git a/src/kernel/syscall/actions/sys_write.c b/src/kernel/syscall/actions/sys_write.c index 554ac5f..8531e85 100644 --- a/src/kernel/syscall/actions/sys_write.c +++ b/src/kernel/syscall/actions/sys_write.c @@ -9,12 +9,10 @@ uint32_t sys_write(char *buf) return strlen((const char *) buf); } -uint32_t sys_writec(char ch) +uint32_t sys_writec(char *ch) { - serial_write_hex(ch); - serial_write("\n"); - serial_put(ch); + serial_write_hex(*ch); serial_write("\n\n"); - writec(ch); + writec((char) *ch); return 0; } \ No newline at end of file -- cgit v1.2.3