aboutsummaryrefslogtreecommitdiff
path: root/kernel/devices/include
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-03 10:15:20 +0100
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-17 16:42:30 +0100
commit52a007ebee4e8ca284ec5767de01c311e9f1860e (patch)
treeca9ea7720562d04b8590e142e908f31030eee6a8 /kernel/devices/include
parentd2e9e3ee57918ddd4a1f81e70304dc15964555ff (diff)
downloadteachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.tar.xz
teachos-52a007ebee4e8ca284ec5767de01c311e9f1860e.zip
implement major and minor analog to the linux kernel
Diffstat (limited to 'kernel/devices/include')
-rw-r--r--kernel/devices/include/devices/BlockDevice.hpp1
-rw-r--r--kernel/devices/include/devices/Device.hpp6
-rw-r--r--kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp4
-rw-r--r--kernel/devices/include/devices/storage/StorageController.hpp7
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