diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-03 10:15:20 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-17 16:42:30 +0100 |
| commit | 52a007ebee4e8ca284ec5767de01c311e9f1860e (patch) | |
| tree | ca9ea7720562d04b8590e142e908f31030eee6a8 /kernel/devices/include | |
| parent | d2e9e3ee57918ddd4a1f81e70304dc15964555ff (diff) | |
| download | teachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.tar.xz teachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.zip | |
implement major and minor analog to the linux kernel
Diffstat (limited to 'kernel/devices/include')
4 files changed, 14 insertions, 4 deletions
diff --git a/kernel/devices/include/devices/BlockDevice.hpp b/kernel/devices/include/devices/BlockDevice.hpp index 9e9ef08..2f9d0aa 100644 --- a/kernel/devices/include/devices/BlockDevice.hpp +++ b/kernel/devices/include/devices/BlockDevice.hpp @@ -9,6 +9,7 @@ namespace devices { struct block_device : device { + block_device(size_t major, size_t minor); virtual ~block_device() = default; virtual auto read_block(size_t block_index, void * buffer) const -> void = 0; diff --git a/kernel/devices/include/devices/Device.hpp b/kernel/devices/include/devices/Device.hpp index 815049f..0f93bff 100644 --- a/kernel/devices/include/devices/Device.hpp +++ b/kernel/devices/include/devices/Device.hpp @@ -2,18 +2,20 @@ #define TEACH_OS_KERNEL_DEVICES_DEVICE_HPP #include <cstddef> + namespace devices { struct device { + device(size_t major, size_t minor); virtual ~device() = default; auto major() const -> size_t; auto minor() const -> size_t; private: - size_t m_major = 0; // TODO BA-FS26 initialize correctly - size_t m_minor = 0; // TODO BA-FS26 initialize correctly + size_t m_major; + size_t m_minor; }; } // namespace devices diff --git a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp index fdcef3f..de71663 100644 --- a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp +++ b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp @@ -13,8 +13,8 @@ namespace devices::storage::ram_disk { constexpr size_t static block_size = 512uz; // TODO BA-FS26 really correct / good?? - ram_disk_device() = default; - ram_disk_device(kapi::boot_modules::boot_module const & module); + ram_disk_device(); // TODO BA-FS26 remove when kstd::vector is available + ram_disk_device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor); auto read_block(size_t block_index, void * buffer) const -> void override; diff --git a/kernel/devices/include/devices/storage/StorageController.hpp b/kernel/devices/include/devices/storage/StorageController.hpp index a51683d..50fdb34 100644 --- a/kernel/devices/include/devices/storage/StorageController.hpp +++ b/kernel/devices/include/devices/storage/StorageController.hpp @@ -13,8 +13,15 @@ namespace devices::storage virtual auto probe() -> void = 0; + auto set_ids(size_t major, size_t minors_per_dev) -> void; + auto major() const -> size_t; + virtual auto devices_count() -> size_t = 0; virtual auto device_by_major_minor(size_t major, size_t minor) -> block_device * = 0; + + protected: + size_t m_major{}; + size_t m_minors_per_device{}; }; } // namespace devices::storage |
