diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-31 08:56:17 +0200 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-31 08:56:17 +0200 |
| commit | 9e85f9d1f34d08213a918d9c1b0845c179e323af (patch) | |
| tree | d3694b22e1b41cbc3bfd340f8f9db47a6602ec73 /kernel/include | |
| parent | ffac763323b88809d2f361bc01cdf9bfe0b1d67f (diff) | |
| download | teachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.tar.xz teachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.zip | |
move device into kapi
Diffstat (limited to 'kernel/include')
11 files changed, 31 insertions, 87 deletions
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 <kstd/string> @@ -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 <kstd/memory> @@ -9,8 +9,8 @@ namespace kernel::devices::block_device_utils { - auto read(kstd::shared_ptr<devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t; - auto write(kstd::shared_ptr<devices::device> const & device, void const * buffer, size_t offset, size_t size) + auto read(kstd::shared_ptr<kapi::devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t; + auto write(kstd::shared_ptr<kapi::devices::device> 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 <kstd/string> - -#include <cstddef> - -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 <kstd/memory> #include <kstd/vector> @@ -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<kstd::shared_ptr<devices::device>> const &; + [[nodiscard]] auto all_devices() const -> kstd::vector<kstd::shared_ptr<kapi::devices::device>> 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<devices::device>; + [[nodiscard]] auto device_by_minor(size_t minor) const -> kstd::shared_ptr<kapi::devices::device>; protected: size_t m_major{}; size_t m_minors_per_device{}; - kstd::vector<kstd::shared_ptr<devices::device>> m_devices{}; + kstd::vector<kstd::shared_ptr<kapi::devices::device>> 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 <kstd/memory> @@ -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<device>; + auto device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<kapi::devices::device>; /** * @brief Determine the boot device. * @return Boot device, or nullptr if it cannot be determined. */ - auto determine_boot_device() -> kstd::shared_ptr<device>; + auto determine_boot_device() -> kstd::shared_ptr<kapi::devices::device>; 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 @@ -23,6 +23,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. * @param buffer Destination buffer, must not be null. 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<devices::device> const & device) -> int override; + auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override; auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name) -> kstd::shared_ptr<kernel::filesystem::inode> 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 <kstd/memory> @@ -12,15 +12,15 @@ namespace kernel::filesystem { struct device_inode : inode { - explicit device_inode(kstd::shared_ptr<devices::device> const & device); + explicit device_inode(kstd::shared_ptr<kapi::devices::device> 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<devices::device> const &; + [[nodiscard]] auto device() const -> kstd::shared_ptr<kapi::devices::device> const &; private: - kstd::shared_ptr<devices::device> m_device; + kstd::shared_ptr<kapi::devices::device> 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<devices::device> const & device) -> int override; + auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override; auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name) -> kstd::shared_ptr<kernel::filesystem::inode> 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 <kstd/memory> @@ -15,14 +15,14 @@ namespace kernel::filesystem { virtual ~filesystem() = default; - virtual auto mount(kstd::shared_ptr<devices::device> const & device) -> int; + virtual auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int; virtual auto lookup(kstd::shared_ptr<inode> const & parent, std::string_view name) -> kstd::shared_ptr<inode> = 0; [[nodiscard]] auto root_inode() const -> kstd::shared_ptr<inode> const &; protected: kstd::shared_ptr<inode> m_root_inode{}; - kstd::shared_ptr<devices::device> m_device{}; + kstd::shared_ptr<kapi::devices::device> m_device{}; kstd::vector<kstd::shared_ptr<inode>> 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<devices::device> const & device) -> int override; + auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override; auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name) -> kstd::shared_ptr<kernel::filesystem::inode> override; }; |
