#include #include #include #include #include #include #include #include namespace kapi::filesystem { auto mount(std::string_view source, std::string_view target) -> int { if (kernel::filesystem::vfs::get().do_mount(source, target) == kernel::filesystem::vfs::operation_result::success) { return 0; } return -1; } auto umount(std::string_view target) -> int { if (kernel::filesystem::vfs::get().unmount(target) == kernel::filesystem::vfs::operation_result::success) { return 0; } return -1; } auto open(std::string_view path) -> int { if (auto dentry = kernel::filesystem::vfs::get().open(path)) { auto open_file_descriptor = kstd::make_shared(dentry->get_inode()); return kernel::filesystem::open_file_table::get().add_file(open_file_descriptor); } return -1; } auto close(int file_descriptor) -> int { return kernel::filesystem::open_file_table::get().remove_file(file_descriptor); } auto read(int file_descriptor, void * buffer, size_t size) -> ssize_t { if (auto open_file_descriptor = kernel::filesystem::open_file_table::get().get_file(file_descriptor)) { return open_file_descriptor->read(buffer, size); } return -1; } auto write(int file_descriptor, void const * buffer, size_t size) -> ssize_t { if (auto open_file_descriptor = kernel::filesystem::open_file_table::get().get_file(file_descriptor)) { return open_file_descriptor->write(buffer, size); } return -1; } } // namespace kapi::filesystem