aboutsummaryrefslogtreecommitdiff
path: root/kernel/filesystem/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/filesystem/include')
-rw-r--r--kernel/filesystem/include/filesystem/custody.hpp23
-rw-r--r--kernel/filesystem/include/filesystem/device_file.hpp32
-rw-r--r--kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp24
-rw-r--r--kernel/filesystem/include/filesystem/file.hpp19
-rw-r--r--kernel/filesystem/include/filesystem/file_descriptor_table.hpp31
-rw-r--r--kernel/filesystem/include/filesystem/filesystem.hpp28
-rw-r--r--kernel/filesystem/include/filesystem/inode.hpp38
-rw-r--r--kernel/filesystem/include/filesystem/inode_file.hpp27
-rw-r--r--kernel/filesystem/include/filesystem/inode_metadata.hpp24
-rw-r--r--kernel/filesystem/include/filesystem/mount.hpp25
-rw-r--r--kernel/filesystem/include/filesystem/open_file_description.hpp28
-rw-r--r--kernel/filesystem/include/filesystem/vfs.hpp46
12 files changed, 0 insertions, 345 deletions
diff --git a/kernel/filesystem/include/filesystem/custody.hpp b/kernel/filesystem/include/filesystem/custody.hpp
deleted file mode 100644
index 0124eb6..0000000
--- a/kernel/filesystem/include/filesystem/custody.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef TEACH_OS_KERNEL_CUSTODY_HPP
-#define TEACH_OS_KERNEL_CUSTODY_HPP
-
-#include "filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-namespace filesystem
-{
- struct custody
- {
- custody(kstd::shared_ptr<custody> const & parent, kstd::shared_ptr<inode> const & node);
-
- [[nodiscard]] auto get_inode() const -> kstd::shared_ptr<inode> const &;
- [[nodiscard]] auto get_parent() const -> kstd::shared_ptr<custody> const &;
-
- private:
- kstd::shared_ptr<custody> m_parent;
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/device_file.hpp b/kernel/filesystem/include/filesystem/device_file.hpp
deleted file mode 100644
index dad4ea5..0000000
--- a/kernel/filesystem/include/filesystem/device_file.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-
-#include "devices/block_device.hpp"
-#include "devices/device.hpp"
-#include "filesystem/file.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct device_file : file
- {
- explicit device_file(kstd::shared_ptr<devices::device> const & device);
-
- auto open() -> void override;
-
- auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
- auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
-
- private:
- using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
- std::byte * scratch, void * buffer);
- auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t;
-
- kstd::shared_ptr<devices::device> m_device;
- };
-} // namespace filesystem
-
-#endif
diff --git a/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp b/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp
deleted file mode 100644
index 37448a1..0000000
--- a/kernel/filesystem/include/filesystem/ext2/ext2_filesystem.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP
-
-#include "devices/device.hpp"
-#include "filesystem/filesystem.hpp"
-#include "filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <string_view>
-
-namespace filesystem::ext2
-{
- struct ext2_filesystem : filesystem
- {
- auto mount(kstd::shared_ptr<devices::device> const & device) -> int override;
- auto lookup(inode const & parent, std::string_view name) -> inode * override;
-
- private:
- kstd::shared_ptr<devices::device> m_device{};
- };
-} // namespace filesystem::ext2
-
-#endif
diff --git a/kernel/filesystem/include/filesystem/file.hpp b/kernel/filesystem/include/filesystem/file.hpp
deleted file mode 100644
index e7e1b12..0000000
--- a/kernel/filesystem/include/filesystem/file.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct file
- {
- virtual ~file() = default;
-
- virtual auto open() -> void = 0;
-
- virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
- virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/file_descriptor_table.hpp b/kernel/filesystem/include/filesystem/file_descriptor_table.hpp
deleted file mode 100644
index 6d78532..0000000
--- a/kernel/filesystem/include/filesystem/file_descriptor_table.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILE_DESCRIPTOR_TABLE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_FILE_DESCRIPTOR_TABLE_HPP
-
-#include "open_file_description.hpp"
-
-#include <kstd/vector>
-
-#include <optional>
-
-namespace filesystem
-{
- struct file_descriptor_table
- {
- auto static init() -> void;
- auto static get() -> file_descriptor_table &;
-
- ~file_descriptor_table() = default;
-
- auto add_file(open_file_description & f) -> int;
- [[nodiscard]] auto get_file(int fd) const -> std::optional<open_file_description>;
- auto remove_file(int fd) -> void;
-
- private:
- file_descriptor_table() = default;
-
- // TODO BA-FS26 use kstd::shared_ptr when available
- kstd::vector<std::optional<open_file_description>> m_open_files{};
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/filesystem.hpp b/kernel/filesystem/include/filesystem/filesystem.hpp
deleted file mode 100644
index 934f883..0000000
--- a/kernel/filesystem/include/filesystem/filesystem.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP
-
-#include "devices/device.hpp"
-#include "filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <string_view>
-
-namespace filesystem
-{
- struct filesystem
- {
- virtual ~filesystem() = default;
-
- virtual auto mount(kstd::shared_ptr<devices::device> const & device) -> int = 0;
- virtual auto lookup(inode const & parent, std::string_view name) -> inode * = 0;
-
- [[nodiscard]] auto root_inode() const -> inode const &;
-
- protected:
- inode m_root_inode{}; // TODO BA-FS26 set during mount?
- };
-
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/inode.hpp b/kernel/filesystem/include/filesystem/inode.hpp
deleted file mode 100644
index abfe2cf..0000000
--- a/kernel/filesystem/include/filesystem/inode.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_HPP
-
-#include "devices/device.hpp"
-#include "filesystem/inode_metadata.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode
- {
- inode() = default;
- explicit inode(inode_kind kind);
- explicit inode(kstd::shared_ptr<devices::device> const & device);
-
- [[nodiscard]] auto metadata() const -> inode_metadata;
-
- [[nodiscard]] auto is_directory() const -> bool;
- [[nodiscard]] auto is_regular() const -> bool;
- [[nodiscard]] auto is_device() const -> bool;
- [[nodiscard]] auto is_block_device() const -> bool;
- [[nodiscard]] auto major_device() const -> size_t;
- [[nodiscard]] auto minor_device() const -> size_t;
- [[nodiscard]] auto backing_device() const -> kstd::shared_ptr<devices::device> const &;
-
- auto read(void * buffer, size_t offset, size_t size) const -> size_t;
- auto write(void const * buffer, size_t offset, size_t size) -> size_t;
-
- private:
- inode_kind m_kind{inode_kind::regular};
- kstd::shared_ptr<devices::device> m_device{};
- };
-} // namespace filesystem
-
-#endif
diff --git a/kernel/filesystem/include/filesystem/inode_file.hpp b/kernel/filesystem/include/filesystem/inode_file.hpp
deleted file mode 100644
index 5f8a95e..0000000
--- a/kernel/filesystem/include/filesystem/inode_file.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-
-#include "filesystem/file.hpp"
-#include "filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode_file : file
- {
- explicit inode_file(kstd::shared_ptr<inode> const & inode);
-
- auto open() -> void override;
-
- auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
- auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
-
- private:
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/inode_metadata.hpp b/kernel/filesystem/include/filesystem/inode_metadata.hpp
deleted file mode 100644
index ed5a09d..0000000
--- a/kernel/filesystem/include/filesystem/inode_metadata.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP
-
-#include <cstddef>
-#include <optional>
-
-namespace filesystem
-{
- enum class inode_kind
- {
- regular,
- directory,
- device
- };
-
- struct inode_metadata
- {
- inode_kind kind{inode_kind::regular};
- std::optional<size_t> major{};
- std::optional<size_t> minor{};
- };
-} // namespace filesystem
-
-#endif // TEACH_OS_KERNEL_FILESYSTEM_INODE_METADATA_HPP \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/mount.hpp b/kernel/filesystem/include/filesystem/mount.hpp
deleted file mode 100644
index 46a68e2..0000000
--- a/kernel/filesystem/include/filesystem/mount.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_MOUNT_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_MOUNT_HPP
-
-#include "filesystem/filesystem.hpp"
-
-#include <kstd/memory>
-
-#include <string_view>
-
-namespace filesystem
-{
- struct mount
- {
- mount(std::string_view const & path, kstd::shared_ptr<filesystem> const & fs);
-
- [[nodiscard]] auto path() const -> std::string_view;
- [[nodiscard]] auto get_filesystem() const -> kstd::shared_ptr<filesystem> const &;
-
- private:
- std::string_view m_path;
- kstd::shared_ptr<filesystem> m_filesystem{};
- };
-} // namespace filesystem
-
-#endif
diff --git a/kernel/filesystem/include/filesystem/open_file_description.hpp b/kernel/filesystem/include/filesystem/open_file_description.hpp
deleted file mode 100644
index 5ff094d..0000000
--- a/kernel/filesystem/include/filesystem/open_file_description.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
-
-#include "file.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct open_file_description
- {
- open_file_description(kstd::shared_ptr<file> const & file);
-
- ~open_file_description() = default;
-
- auto read(void * buffer, size_t size) -> size_t;
- auto write(void const * buffer, size_t size) -> size_t;
-
- private:
- kstd::shared_ptr<file> m_file;
- size_t m_offset;
- };
-
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/filesystem/include/filesystem/vfs.hpp b/kernel/filesystem/include/filesystem/vfs.hpp
deleted file mode 100644
index e16a961..0000000
--- a/kernel/filesystem/include/filesystem/vfs.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_VFS_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_VFS_HPP
-
-#include "devices/device.hpp"
-#include "filesystem/custody.hpp"
-#include "filesystem/ext2/ext2_filesystem.hpp"
-#include "filesystem/inode.hpp"
-#include "filesystem/mount.hpp"
-#include "filesystem/open_file_description.hpp"
-
-#include <kstd/memory>
-#include <kstd/vector>
-
-#include <optional>
-#include <string_view>
-
-namespace filesystem
-{
- struct vfs
- {
- auto static init() -> void;
- auto static get() -> vfs &;
-
- ~vfs() = default;
-
- auto open(std::string_view path) -> std::optional<open_file_description>;
-
- private:
- struct device_node_entry
- {
- std::string_view name;
- kstd::shared_ptr<inode> node;
- };
-
- vfs() = default;
- auto make_device_node(kstd::shared_ptr<devices::device> const & device) -> void;
- [[nodiscard]] auto resolve_path(std::string_view path) -> std::optional<custody>;
-
- kstd::shared_ptr<ext2::ext2_filesystem> m_root_fs;
- std::optional<mount> m_root_mount;
- // kstd::vector<mount> m_mounts; // TODO BA-FS26 really needed?
- kstd::vector<std::optional<device_node_entry>> m_device_nodes; // TODO BA-FS26 remove again, use devtempfs
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file