diff options
| author | Lukas Oesch <lukas.oesch@ost.ch> | 2026-03-30 21:37:09 +0200 |
|---|---|---|
| committer | Lukas Oesch <lukas.oesch@ost.ch> | 2026-03-30 21:37:09 +0200 |
| commit | ffac763323b88809d2f361bc01cdf9bfe0b1d67f (patch) | |
| tree | 2ec969f3ae4008d0ea8d81efacd5bb810a03d96c /kernel/src/devices | |
| parent | 9058bbed061602cdf41013d5e5d91ce892f63c94 (diff) | |
| parent | 846135ba5cdfa545124b97c74182f5eada9a403a (diff) | |
| download | teachos-ffac763323b88809d2f361bc01cdf9bfe0b1d67f.tar.xz teachos-ffac763323b88809d2f361bc01cdf9bfe0b1d67f.zip | |
Merge branch 'refactor' into 'develop-BA-FS26'
Refactor
See merge request teachos/kernel!18
Diffstat (limited to 'kernel/src/devices')
| -rw-r--r-- | kernel/src/devices/block_device.cpp | 4 | ||||
| -rw-r--r-- | kernel/src/devices/block_device_utils.cpp | 4 | ||||
| -rw-r--r-- | kernel/src/devices/device.cpp | 4 | ||||
| -rw-r--r-- | kernel/src/devices/storage/controller.cpp | 44 | ||||
| -rw-r--r-- | kernel/src/devices/storage/management.cpp (renamed from kernel/src/devices/storage/storage_management.cpp) | 28 | ||||
| -rw-r--r-- | kernel/src/devices/storage/ram_disk/controller.cpp | 27 | ||||
| -rw-r--r-- | kernel/src/devices/storage/ram_disk/device.cpp (renamed from kernel/src/devices/storage/ram_disk/ram_disk_device.cpp) | 15 | ||||
| -rw-r--r-- | kernel/src/devices/storage/ram_disk/ram_disk_controller.cpp | 27 | ||||
| -rw-r--r-- | kernel/src/devices/storage/storage_controller.cpp | 44 |
9 files changed, 98 insertions, 99 deletions
diff --git a/kernel/src/devices/block_device.cpp b/kernel/src/devices/block_device.cpp index 3402814..cfe2eb2 100644 --- a/kernel/src/devices/block_device.cpp +++ b/kernel/src/devices/block_device.cpp @@ -8,7 +8,7 @@ #include <cstddef> -namespace devices +namespace kernel::devices { block_device::block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size) : device(major, minor, name) @@ -40,4 +40,4 @@ namespace devices { return size(); } -} // namespace devices
\ No newline at end of file +} // namespace kernel::devices
\ No newline at end of file diff --git a/kernel/src/devices/block_device_utils.cpp b/kernel/src/devices/block_device_utils.cpp index 9d3af1b..5469087 100644 --- a/kernel/src/devices/block_device_utils.cpp +++ b/kernel/src/devices/block_device_utils.cpp @@ -12,7 +12,7 @@ #include <algorithm> #include <cstddef> -namespace devices::block_device_utils +namespace kernel::devices::block_device_utils { using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device, @@ -100,4 +100,4 @@ namespace devices::block_device_utils }); } -} // namespace devices::block_device_utils
\ No newline at end of file +} // namespace kernel::devices::block_device_utils
\ No newline at end of file diff --git a/kernel/src/devices/device.cpp b/kernel/src/devices/device.cpp index 287f14b..1e7589e 100644 --- a/kernel/src/devices/device.cpp +++ b/kernel/src/devices/device.cpp @@ -4,7 +4,7 @@ #include <cstddef> -namespace devices +namespace kernel::devices { device::device(size_t major, size_t minor, kstd::string const & name) : m_major(major) @@ -26,4 +26,4 @@ namespace devices { return m_name; } -} // namespace devices
\ No newline at end of file +} // namespace kernel::devices
\ No newline at end of file diff --git a/kernel/src/devices/storage/controller.cpp b/kernel/src/devices/storage/controller.cpp new file mode 100644 index 0000000..46c45e4 --- /dev/null +++ b/kernel/src/devices/storage/controller.cpp @@ -0,0 +1,44 @@ +#include "kernel/devices/storage/controller.hpp" + +#include "kernel/devices/device.hpp" + +#include <kstd/memory> +#include <kstd/vector> + +#include <algorithm> +#include <cstddef> + +namespace kernel::devices::storage +{ + auto controller::set_ids(size_t major, size_t minors_per_dev) -> void + { + m_major = major; + m_minors_per_device = minors_per_dev; + } + + auto controller::major() const -> size_t + { + return m_major; + } + + auto controller::device_by_minor(size_t minor) const -> kstd::shared_ptr<devices::device> + { + auto it = std::ranges::find_if(m_devices, [minor](auto const & device) { return device->minor() == minor; }); + + if (it != m_devices.end()) + { + return *it; + } + return nullptr; + } + + auto controller::devices_count() const -> size_t + { + return m_devices.size(); + } + + auto controller::all_devices() const -> kstd::vector<kstd::shared_ptr<devices::device>> const & + { + return m_devices; + } +} // namespace kernel::devices::storage
\ No newline at end of file diff --git a/kernel/src/devices/storage/storage_management.cpp b/kernel/src/devices/storage/management.cpp index 56216b0..62c0ce4 100644 --- a/kernel/src/devices/storage/storage_management.cpp +++ b/kernel/src/devices/storage/management.cpp @@ -1,11 +1,11 @@ -#include "kernel/devices/storage/storage_management.hpp" +#include "kernel/devices/storage/management.hpp" #include "kapi/boot_modules.hpp" #include "kapi/system.hpp" #include "kernel/devices/device.hpp" -#include "kernel/devices/storage/ram_disk/ram_disk_controller.hpp" -#include "kernel/devices/storage/storage_controller.hpp" +#include "kernel/devices/storage/controller.hpp" +#include "kernel/devices/storage/ram_disk/controller.hpp" #include <kstd/memory> #include <kstd/vector> @@ -14,7 +14,7 @@ #include <cstddef> #include <optional> -namespace devices::storage +namespace kernel::devices::storage { namespace { @@ -22,25 +22,25 @@ namespace devices::storage constexpr size_t static START_MAJOR = 1; constinit size_t static next_free_major = START_MAJOR; - constinit auto static active_storage_management = std::optional<storage_management>{}; + constinit auto static active_storage_management = std::optional<management>{}; } // namespace - auto storage_management::init() -> void + auto management::init() -> void { if (active_storage_management) { kapi::system::panic("[DEVICES] Storage management has already been initialized."); } - active_storage_management.emplace(storage_management{}); + active_storage_management.emplace(management{}); auto current_ram_disk_controller = - kstd::make_shared<ram_disk::ram_disk_controller>(&kapi::boot_modules::get_boot_module_registry()); + kstd::make_shared<ram_disk::controller>(&kapi::boot_modules::get_boot_module_registry()); active_storage_management->add_controller(current_ram_disk_controller); std::ranges::for_each(active_storage_management->m_controllers, [](auto controller) { controller->probe(); }); } - auto storage_management::get() -> storage_management & + auto management::get() -> management & { if (!active_storage_management) { @@ -50,18 +50,18 @@ namespace devices::storage return *active_storage_management; } - auto storage_management::add_controller(kstd::shared_ptr<storage_controller> const & controller) -> void + auto management::add_controller(kstd::shared_ptr<controller> const & controller) -> void { controller->set_ids(next_free_major++, MINORS_PER_DEVICE); m_controllers.push_back(controller); } - auto storage_management::all_controllers() const -> kstd::vector<kstd::shared_ptr<storage_controller>> const & + auto management::all_controllers() const -> kstd::vector<kstd::shared_ptr<controller>> const & { return m_controllers; } - auto storage_management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<device> + auto management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<device> { kstd::shared_ptr<device> found = nullptr; @@ -77,9 +77,9 @@ namespace devices::storage return found; } - auto storage_management::determine_boot_device() -> kstd::shared_ptr<device> + auto management::determine_boot_device() -> kstd::shared_ptr<device> { return device_by_major_minor(START_MAJOR, 0); } -} // namespace devices::storage
\ No newline at end of file +} // namespace kernel::devices::storage
\ No newline at end of file diff --git a/kernel/src/devices/storage/ram_disk/controller.cpp b/kernel/src/devices/storage/ram_disk/controller.cpp new file mode 100644 index 0000000..040e61f --- /dev/null +++ b/kernel/src/devices/storage/ram_disk/controller.cpp @@ -0,0 +1,27 @@ +#include "kernel/devices/storage/ram_disk/controller.hpp" + +#include "kapi/boot_module/boot_module_registry.hpp" + +#include "kernel/devices/storage/ram_disk/device.hpp" + +#include <kstd/memory> + +#include <algorithm> +#include <cstddef> + +namespace kernel::devices::storage::ram_disk +{ + controller::controller(kapi::boot_modules::boot_module_registry const * registry) + : m_boot_module_registry(registry) + {} + + auto controller::probe() -> void + { + size_t current_device_index = 0; + + std::ranges::for_each(*m_boot_module_registry, [this, ¤t_device_index](auto const & module) { + auto const minor = current_device_index++ * m_minors_per_device; + m_devices.push_back(kstd::make_shared<device>(module, m_major, minor)); + }); + } +} // namespace kernel::devices::storage::ram_disk
\ No newline at end of file diff --git a/kernel/src/devices/storage/ram_disk/ram_disk_device.cpp b/kernel/src/devices/storage/ram_disk/device.cpp index bf329cb..5116c93 100644 --- a/kernel/src/devices/storage/ram_disk/ram_disk_device.cpp +++ b/kernel/src/devices/storage/ram_disk/device.cpp @@ -1,28 +1,27 @@ -#include "kernel/devices/storage/ram_disk/ram_disk_device.hpp" - #include "kapi/boot_module/boot_module.hpp" #include "kapi/system.hpp" #include "kernel/devices/block_device.hpp" +#include "kernel/devices/storage/ram_disk/device.hpp" #include <kstd/cstring> #include <kstd/string> #include <cstddef> -namespace devices::storage::ram_disk +namespace kernel::devices::storage::ram_disk { namespace { constexpr size_t RAM_DISK_BLOCK_SIZE = 512uz; } // namespace - ram_disk_device::ram_disk_device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor) + device::device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor) : block_device(major, minor, "ram" + kstd::to_string(minor), RAM_DISK_BLOCK_SIZE) , m_boot_module(module) {} - auto ram_disk_device::read_block(size_t block_index, void * buffer) const -> void + auto device::read_block(size_t block_index, void * buffer) const -> void { if (buffer == nullptr) { @@ -43,7 +42,7 @@ namespace devices::storage::ram_disk } } - auto ram_disk_device::write_block(size_t block_index, void const * buffer) -> void + auto device::write_block(size_t block_index, void const * buffer) -> void { if (buffer == nullptr) { @@ -59,8 +58,8 @@ namespace devices::storage::ram_disk } } - auto ram_disk_device::size() const -> size_t + auto device::size() const -> size_t { return m_boot_module.size; } -} // namespace devices::storage::ram_disk
\ No newline at end of file +} // namespace kernel::devices::storage::ram_disk
\ No newline at end of file diff --git a/kernel/src/devices/storage/ram_disk/ram_disk_controller.cpp b/kernel/src/devices/storage/ram_disk/ram_disk_controller.cpp deleted file mode 100644 index f3e9f70..0000000 --- a/kernel/src/devices/storage/ram_disk/ram_disk_controller.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "kernel/devices/storage/ram_disk/ram_disk_controller.hpp" - -#include "kapi/boot_module/boot_module_registry.hpp" - -#include "kernel/devices/storage/ram_disk/ram_disk_device.hpp" - -#include <kstd/memory> - -#include <algorithm> -#include <cstddef> - -namespace devices::storage::ram_disk -{ - ram_disk_controller::ram_disk_controller(kapi::boot_modules::boot_module_registry const * registry) - : m_boot_module_registry(registry) - {} - - auto ram_disk_controller::probe() -> void - { - size_t current_device_index = 0; - - std::ranges::for_each(*m_boot_module_registry, [this, ¤t_device_index](auto const & module) { - auto const minor = current_device_index++ * m_minors_per_device; - m_devices.push_back(kstd::make_shared<ram_disk_device>(module, m_major, minor)); - }); - } -} // namespace devices::storage::ram_disk
\ No newline at end of file diff --git a/kernel/src/devices/storage/storage_controller.cpp b/kernel/src/devices/storage/storage_controller.cpp deleted file mode 100644 index e415436..0000000 --- a/kernel/src/devices/storage/storage_controller.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include "kernel/devices/storage/storage_controller.hpp" - -#include "kernel/devices/device.hpp" - -#include <kstd/memory> -#include <kstd/vector> - -#include <algorithm> -#include <cstddef> - -namespace devices::storage -{ - auto storage_controller::set_ids(size_t major, size_t minors_per_dev) -> void - { - m_major = major; - m_minors_per_device = minors_per_dev; - } - - auto storage_controller::major() const -> size_t - { - return m_major; - } - - auto storage_controller::device_by_minor(size_t minor) const -> kstd::shared_ptr<devices::device> - { - auto it = std::ranges::find_if(m_devices, [minor](auto const & device) { return device->minor() == minor; }); - - if (it != m_devices.end()) - { - return *it; - } - return nullptr; - } - - auto storage_controller::devices_count() const -> size_t - { - return m_devices.size(); - } - - auto storage_controller::all_devices() const -> kstd::vector<kstd::shared_ptr<devices::device>> const & - { - return m_devices; - } -} // namespace devices::storage
\ No newline at end of file |
