From 8a9208612eec8ddae4c418485d848ecfa0613699 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Mon, 30 Oct 2023 22:12:14 +0100 Subject: Meta: Move kernel and userland to their own folders. This is to allow both the kernel and the userland to share certain header files and to make the folder structure a bit more clear. --- fs/devfs.c | 91 -------------------------------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 fs/devfs.c (limited to 'fs/devfs.c') diff --git a/fs/devfs.c b/fs/devfs.c deleted file mode 100644 index 14748a7..0000000 --- a/fs/devfs.c +++ /dev/null @@ -1,91 +0,0 @@ -#include -#include -#include -#include -#include - -devfs_file files[20]; -int num_files = 0; - -vfs_inode_t *devfs_add_file( - char *path, - int (*read)(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd), - int (*write)(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd), - vfs_vm_object_t *(get_vm_object)(uint64_t length, uint64_t offset, - vfs_fd_t *fd), - uint8_t has_data, uint8_t can_write, int type) { - files[num_files].name = copy_and_allocate_string(path); - - vfs_inode_t *i = kmalloc(sizeof(vfs_inode_t)); - files[num_files].inode = i; - i->type = type; - i->read = read; - i->write = write; - i->close = NULL; - i->get_vm_object = get_vm_object; - i->has_data = has_data; - i->is_open = 1; - i->can_write = can_write; - num_files++; - return i; -} - -vfs_inode_t *devfs_open(const char *file) { - for (int i = 0; i < num_files; i++) - if (isequal_n(files[i].name, file, strlen(files[i].name))) - return files[i].inode; - - return 0; -} - -int devfs_read(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd) { - return fd->inode->read(buffer, offset, len, fd); -} - -int devfs_write(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd) { - return fd->inode->write(buffer, offset, len, fd); -} - -vfs_vm_object_t *devfs_get_vm_object(uint64_t length, uint64_t offset, - vfs_fd_t *fd) { - return fd->inode->get_vm_object(length, offset, fd); -} - -int stdout_write(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd) { - (void)offset; - (void)fd; - - int rc = len; - for (; len--;) - putc(*buffer++); - return rc; -} - -int serial_write(uint8_t *buffer, uint64_t offset, uint64_t len, vfs_fd_t *fd) { - (void)offset; - (void)fd; - - int rc = len; - for (; len--;) - write_serial(*buffer++); - return rc; -} - -void add_serial(void) { - devfs_add_file("/serial", NULL, serial_write, NULL, 0, 1, - FS_TYPE_CHAR_DEVICE); -} - -void add_stdout(void) { - devfs_add_file("/stdout", NULL, stdout_write, NULL, 0, 1, - FS_TYPE_CHAR_DEVICE); -} - -vfs_inode_t *devfs_mount(void) { - vfs_inode_t *root = kmalloc_eternal(sizeof(vfs_inode_t)); - root->open = devfs_open; - root->read = devfs_read; - root->write = devfs_write; - root->close = NULL; - return root; -} -- cgit v1.2.3