aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/devices/include/devices/storage/storage_controller.hpp9
-rw-r--r--kernel/devices/include/devices/storage/storage_management.hpp4
-rw-r--r--kernel/devices/src/storage/storage_controller.cpp10
-rw-r--r--kernel/devices/src/storage/storage_management.cpp6
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;