From 9e85f9d1f34d08213a918d9c1b0845c179e323af Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Tue, 31 Mar 2026 08:56:17 +0200 Subject: move device into kapi --- kernel/include/kernel/devices/block_device.hpp | 4 +- .../include/kernel/devices/block_device_utils.hpp | 6 +-- kernel/include/kernel/devices/device.hpp | 62 ---------------------- .../include/kernel/devices/storage/controller.hpp | 8 +-- .../include/kernel/devices/storage/management.hpp | 6 +-- .../kernel/devices/storage/ram_disk/device.hpp | 6 +++ .../include/kernel/filesystem/devfs/filesystem.hpp | 4 +- kernel/include/kernel/filesystem/device_inode.hpp | 8 +-- .../include/kernel/filesystem/ext2/filesystem.hpp | 4 +- kernel/include/kernel/filesystem/filesystem.hpp | 6 +-- .../kernel/filesystem/rootfs/filesystem.hpp | 4 +- 11 files changed, 31 insertions(+), 87 deletions(-) delete mode 100644 kernel/include/kernel/devices/device.hpp (limited to 'kernel/include') diff --git a/kernel/include/kernel/devices/block_device.hpp b/kernel/include/kernel/devices/block_device.hpp index 619b815..43e6511 100644 --- a/kernel/include/kernel/devices/block_device.hpp +++ b/kernel/include/kernel/devices/block_device.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP #define TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include @@ -12,7 +12,7 @@ namespace kernel::devices /** * @brief Base interface for block-addressable devices. */ - struct block_device : device + struct block_device : kapi::devices::device { /** * @brief Create a block device descriptor. diff --git a/kernel/include/kernel/devices/block_device_utils.hpp b/kernel/include/kernel/devices/block_device_utils.hpp index bb49d04..5e862ba 100644 --- a/kernel/include/kernel/devices/block_device_utils.hpp +++ b/kernel/include/kernel/devices/block_device_utils.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_UTILS_HPP #define TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_UTILS_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include @@ -9,8 +9,8 @@ namespace kernel::devices::block_device_utils { - auto read(kstd::shared_ptr const & device, void * buffer, size_t offset, size_t size) -> size_t; - auto write(kstd::shared_ptr const & device, void const * buffer, size_t offset, size_t size) + auto read(kstd::shared_ptr const & device, void * buffer, size_t offset, size_t size) -> size_t; + auto write(kstd::shared_ptr const & device, void const * buffer, size_t offset, size_t size) -> size_t; } // namespace kernel::devices::block_device_utils diff --git a/kernel/include/kernel/devices/device.hpp b/kernel/include/kernel/devices/device.hpp deleted file mode 100644 index 67fa5ad..0000000 --- a/kernel/include/kernel/devices/device.hpp +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef TEACH_OS_KERNEL_DEVICES_DEVICE_HPP -#define TEACH_OS_KERNEL_DEVICES_DEVICE_HPP - -#include - -#include - -namespace kernel::devices -{ - /** - * @brief Base device identified by a major, minor number and name. - */ - struct device - { - /** - * @brief Create a device identifier from @p major, @p minor and @p name. - * @param major Device major number. - * @param minor Device minor number. - * @param name Device name. - */ - device(size_t major, size_t minor, kstd::string const & name); - - /** - * @brief Virtual destructor for device. - */ - virtual ~device() = default; - - /** - * @brief Returns the major number of the device. - * @return Device major number. - */ - [[nodiscard]] auto major() const -> size_t; - - /** - * @brief Returns the minor number of the device. - * @return Device minor number. - */ - [[nodiscard]] auto minor() const -> size_t; - - /** - * @brief Returns the name of the device. - * @return Device name. - */ - [[nodiscard]] auto name() const -> kstd::string const &; - - /** - * @brief Check if the device is a block device. - * @return true if this device is a block device, false otherwise. - */ - [[nodiscard]] virtual auto is_block_device() const -> bool - { - return false; - } - - private: - size_t m_major; - size_t m_minor; - kstd::string m_name; - }; -} // namespace kernel::devices - -#endif \ No newline at end of file diff --git a/kernel/include/kernel/devices/storage/controller.hpp b/kernel/include/kernel/devices/storage/controller.hpp index e3bfd01..a91e452 100644 --- a/kernel/include/kernel/devices/storage/controller.hpp +++ b/kernel/include/kernel/devices/storage/controller.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_CONTROLLER_HPP #define TEACH_OS_KERNEL_DEVICES_STORAGE_CONTROLLER_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include #include @@ -51,7 +51,7 @@ namespace kernel::devices::storage * @brief Return all devices managed by this controller. * @return Vector of all managed devices. */ - [[nodiscard]] auto all_devices() const -> kstd::vector> const &; + [[nodiscard]] auto all_devices() const -> kstd::vector> const &; /** * @brief Find a managed device by major/minor numbers. @@ -59,12 +59,12 @@ namespace kernel::devices::storage * @param minor Device minor number. * @return Matching block device, or nullptr if no device matches. */ - [[nodiscard]] auto device_by_minor(size_t minor) const -> kstd::shared_ptr; + [[nodiscard]] auto device_by_minor(size_t minor) const -> kstd::shared_ptr; protected: size_t m_major{}; size_t m_minors_per_device{}; - kstd::vector> m_devices{}; + kstd::vector> m_devices{}; }; } // namespace kernel::devices::storage diff --git a/kernel/include/kernel/devices/storage/management.hpp b/kernel/include/kernel/devices/storage/management.hpp index 255d170..0176ce1 100644 --- a/kernel/include/kernel/devices/storage/management.hpp +++ b/kernel/include/kernel/devices/storage/management.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_MANAGEMENT_HPP #define TEACH_OS_KERNEL_DEVICES_STORAGE_MANAGEMENT_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/devices/storage/controller.hpp" #include @@ -56,13 +56,13 @@ namespace kernel::devices::storage * @param minor Device minor number. * @return Matching device, or nullptr if no device matches. */ - auto device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr; + auto device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr; /** * @brief Determine the boot device. * @return Boot device, or nullptr if it cannot be determined. */ - auto determine_boot_device() -> kstd::shared_ptr; + auto determine_boot_device() -> kstd::shared_ptr; private: /** diff --git a/kernel/include/kernel/devices/storage/ram_disk/device.hpp b/kernel/include/kernel/devices/storage/ram_disk/device.hpp index 0777e86..e17416e 100644 --- a/kernel/include/kernel/devices/storage/ram_disk/device.hpp +++ b/kernel/include/kernel/devices/storage/ram_disk/device.hpp @@ -22,6 +22,12 @@ namespace kernel::devices::storage::ram_disk */ device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor); + /** + * @brief Initialize the RAM disk device. + * @return true if module backing memory is valid, false otherwise. + */ + auto init() -> bool override; + /** * @brief Read one logical block into @p buffer. * @param block_index Zero-based block index. diff --git a/kernel/include/kernel/filesystem/devfs/filesystem.hpp b/kernel/include/kernel/filesystem/devfs/filesystem.hpp index 5ec6221..29ae388 100644 --- a/kernel/include/kernel/filesystem/devfs/filesystem.hpp +++ b/kernel/include/kernel/filesystem/devfs/filesystem.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVFS_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_DEVFS_FILESYSTEM_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/filesystem/filesystem.hpp" #include "kernel/filesystem/inode.hpp" @@ -14,7 +14,7 @@ namespace kernel::filesystem::devfs { struct filesystem : kernel::filesystem::filesystem { - auto mount(kstd::shared_ptr const & device) -> int override; + auto mount(kstd::shared_ptr const & device) -> int override; auto lookup(kstd::shared_ptr const & parent, std::string_view name) -> kstd::shared_ptr override; diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp index 7f044b0..18a98f5 100644 --- a/kernel/include/kernel/filesystem/device_inode.hpp +++ b/kernel/include/kernel/filesystem/device_inode.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP #define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/filesystem/inode.hpp" #include @@ -12,15 +12,15 @@ namespace kernel::filesystem { struct device_inode : inode { - explicit device_inode(kstd::shared_ptr const & device); + explicit device_inode(kstd::shared_ptr const & device); 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; - [[nodiscard]] auto device() const -> kstd::shared_ptr const &; + [[nodiscard]] auto device() const -> kstd::shared_ptr const &; private: - kstd::shared_ptr m_device; + kstd::shared_ptr m_device; }; } // namespace kernel::filesystem diff --git a/kernel/include/kernel/filesystem/ext2/filesystem.hpp b/kernel/include/kernel/filesystem/ext2/filesystem.hpp index 763cd1d..078da31 100644 --- a/kernel/include/kernel/filesystem/ext2/filesystem.hpp +++ b/kernel/include/kernel/filesystem/ext2/filesystem.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/filesystem/filesystem.hpp" #include "kernel/filesystem/inode.hpp" @@ -13,7 +13,7 @@ namespace kernel::filesystem::ext2 { struct filesystem : kernel::filesystem::filesystem { - auto mount(kstd::shared_ptr const & device) -> int override; + auto mount(kstd::shared_ptr const & device) -> int override; auto lookup(kstd::shared_ptr const & parent, std::string_view name) -> kstd::shared_ptr override; }; diff --git a/kernel/include/kernel/filesystem/filesystem.hpp b/kernel/include/kernel/filesystem/filesystem.hpp index c50a86c..1d86178 100644 --- a/kernel/include/kernel/filesystem/filesystem.hpp +++ b/kernel/include/kernel/filesystem/filesystem.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/filesystem/inode.hpp" #include @@ -15,14 +15,14 @@ namespace kernel::filesystem { virtual ~filesystem() = default; - virtual auto mount(kstd::shared_ptr const & device) -> int; + virtual auto mount(kstd::shared_ptr const & device) -> int; virtual auto lookup(kstd::shared_ptr const & parent, std::string_view name) -> kstd::shared_ptr = 0; [[nodiscard]] auto root_inode() const -> kstd::shared_ptr const &; protected: kstd::shared_ptr m_root_inode{}; - kstd::shared_ptr m_device{}; + kstd::shared_ptr m_device{}; kstd::vector> m_inodes{}; }; diff --git a/kernel/include/kernel/filesystem/rootfs/filesystem.hpp b/kernel/include/kernel/filesystem/rootfs/filesystem.hpp index b1f33a9..5632d86 100644 --- a/kernel/include/kernel/filesystem/rootfs/filesystem.hpp +++ b/kernel/include/kernel/filesystem/rootfs/filesystem.hpp @@ -1,7 +1,7 @@ #ifndef TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP #define TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP -#include "kernel/devices/device.hpp" +#include "kapi/devices/device.hpp" #include "kernel/filesystem/filesystem.hpp" #include "kernel/filesystem/inode.hpp" @@ -15,7 +15,7 @@ namespace kernel::filesystem::rootfs { struct filesystem : kernel::filesystem::filesystem { - auto mount(kstd::shared_ptr const & device) -> int override; + auto mount(kstd::shared_ptr const & device) -> int override; auto lookup(kstd::shared_ptr const & parent, std::string_view name) -> kstd::shared_ptr override; }; -- cgit v1.2.3