diff options
| author | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-15 18:30:09 +0100 |
|---|---|---|
| committer | Lukas Oesch <lukasoesch20@gmail.com> | 2026-03-17 16:43:08 +0100 |
| commit | 94a92c50cc209ebfa53a9734aff403945a3c9a77 (patch) | |
| tree | 2b167d8684128b4c0e56db7ad04efee6dafd3b50 /kernel/devices | |
| parent | 2af1bbc99e2a8fc4b86bb31023dbbb077b1cbc97 (diff) | |
| download | teachos-94a92c50cc209ebfa53a9734aff403945a3c9a77.tar.xz teachos-94a92c50cc209ebfa53a9734aff403945a3c9a77.zip | |
improve constness, expose controllers and devices
Diffstat (limited to 'kernel/devices')
4 files changed, 24 insertions, 5 deletions
diff --git a/kernel/devices/include/devices/storage/storage_controller.hpp b/kernel/devices/include/devices/storage/storage_controller.hpp index 697d3c3..0518e32 100644 --- a/kernel/devices/include/devices/storage/storage_controller.hpp +++ b/kernel/devices/include/devices/storage/storage_controller.hpp @@ -1,7 +1,6 @@ #ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_CONTROLLER_HPP #define TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_CONTROLLER_HPP -#include "devices/block_device.hpp" #include "devices/device.hpp" #include <array> @@ -44,7 +43,11 @@ namespace devices::storage * @brief Return the number of devices managed by this controller. * @return Number of managed devices. */ - auto devices_count() -> size_t; + auto devices_count() const -> size_t; + + // TODO BA-FS26 add comment + // TODO BA-FS26 use kstd::vector when available + auto all_devices() const -> std::array<devices::device *, 1> const &; /** * @brief Find a managed device by major/minor numbers. @@ -52,7 +55,7 @@ namespace devices::storage * @param minor Device minor number. * @return Matching block device, or nullptr if no device matches. */ - auto device_by_minor(size_t minor) -> device *; + auto device_by_minor(size_t minor) const -> device *; protected: size_t m_major{}; diff --git a/kernel/devices/include/devices/storage/storage_management.hpp b/kernel/devices/include/devices/storage/storage_management.hpp index 6ca8db7..4bc7cbd 100644 --- a/kernel/devices/include/devices/storage/storage_management.hpp +++ b/kernel/devices/include/devices/storage/storage_management.hpp @@ -42,6 +42,10 @@ namespace devices::storage */ auto add_controller(storage_controller * controller) -> void; + // TODO BA-FS26 add comment + // TODO BA-FS26 use kstd::vector when available + auto all_controllers() const -> std::array<storage_controller *, 1> const &; + /** * @brief Find a device by major/minor numbers. * @param major Device major number. diff --git a/kernel/devices/src/storage/storage_controller.cpp b/kernel/devices/src/storage/storage_controller.cpp index d127a8c..d9bc806 100644 --- a/kernel/devices/src/storage/storage_controller.cpp +++ b/kernel/devices/src/storage/storage_controller.cpp @@ -3,6 +3,7 @@ #include "devices/device.hpp" #include <algorithm> +#include <array> #include <cstddef> namespace devices::storage @@ -18,7 +19,7 @@ namespace devices::storage return m_major; } - auto storage_controller::device_by_minor(size_t minor) -> device * + auto storage_controller::device_by_minor(size_t minor) const -> device * { auto it = std::ranges::find_if(m_devices, [minor](auto const & device) { return device->minor() == minor; }); @@ -29,8 +30,13 @@ namespace devices::storage return nullptr; } - auto storage_controller::devices_count() -> size_t + auto storage_controller::devices_count() const -> size_t { return m_devices.size(); } + + auto storage_controller::all_devices() const -> std::array<devices::device *, 1> const & + { + return m_devices; + } } // namespace devices::storage
\ No newline at end of file diff --git a/kernel/devices/src/storage/storage_management.cpp b/kernel/devices/src/storage/storage_management.cpp index a981359..e1f1bcc 100644 --- a/kernel/devices/src/storage/storage_management.cpp +++ b/kernel/devices/src/storage/storage_management.cpp @@ -8,6 +8,7 @@ #include "devices/storage/storage_controller.hpp" #include <algorithm> +#include <array> #include <cstddef> #include <optional> @@ -54,6 +55,11 @@ namespace devices::storage m_controllers.at(0) = controller; // TODO BA-FS26 use push_back from kstd:vector } + auto storage_management::all_controllers() const -> std::array<storage_controller *, 1> const & + { + return m_controllers; + } + auto storage_management::device_by_major_minor(size_t major, size_t minor) -> device * { device * found = nullptr; |
