From aa8a8811818331cf511681327e3ba95e456f0d33 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 2 May 2020 15:44:11 +0200 Subject: Added many syscalls to get better POSIX compliance --- src/kernel/syscall/actions/sys_write.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/kernel/syscall/actions/sys_write.c (limited to 'src/kernel/syscall/actions/sys_write.c') diff --git a/src/kernel/syscall/actions/sys_write.c b/src/kernel/syscall/actions/sys_write.c new file mode 100644 index 0000000..d79ef37 --- /dev/null +++ b/src/kernel/syscall/actions/sys_write.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include +#include + +uint32_t sys_write(char *path, uint32_t offset, uint32_t count, char *buf) +{ + struct fs_node *node = (struct fs_node *)umalloc(sizeof(struct fs_node)); + strcpy(node->name, path); + ext2_root->open(node); + if (node->inode != 0) { + uint32_t size = ((struct ext2_file *)node->impl)->inode.size; + ext2_root->write(node, 0, size, buf); + buf[size - 1] = '\0'; + ext2_root->close(node); + return size; + } else { + ext2_root->close(node); + return -1; + } +} \ No newline at end of file -- cgit v1.2.3