diff options
Diffstat (limited to 'kernel/devices')
| -rw-r--r-- | kernel/devices/include/devices/block_device.hpp | 4 | ||||
| -rw-r--r-- | kernel/devices/include/devices/device.hpp | 12 | ||||
| -rw-r--r-- | kernel/devices/src/block_device.cpp | 5 | ||||
| -rw-r--r-- | kernel/devices/src/device.cpp | 9 | ||||
| -rw-r--r-- | kernel/devices/src/storage/ram_disk/ram_disk_device.cpp | 16 |
5 files changed, 38 insertions, 8 deletions
diff --git a/kernel/devices/include/devices/block_device.hpp b/kernel/devices/include/devices/block_device.hpp index 9bca53f..a2c849f 100644 --- a/kernel/devices/include/devices/block_device.hpp +++ b/kernel/devices/include/devices/block_device.hpp @@ -4,6 +4,7 @@ #include "devices/device.hpp" #include <cstddef> +#include <string_view> namespace devices { @@ -16,9 +17,10 @@ namespace devices * @brief Create a block device descriptor. * @param major Device major number. * @param minor Device minor number. + * @param name Device name. * @param block_size Size of one logical block in bytes. */ - block_device(size_t major, size_t minor, size_t block_size); + block_device(size_t major, size_t minor, std::string_view name, size_t block_size); /** * @brief Virtual destructor for block device. diff --git a/kernel/devices/include/devices/device.hpp b/kernel/devices/include/devices/device.hpp index 7f9f9e1..d1c202d 100644 --- a/kernel/devices/include/devices/device.hpp +++ b/kernel/devices/include/devices/device.hpp @@ -2,6 +2,7 @@ #define TEACH_OS_KERNEL_DEVICES_DEVICE_HPP #include <cstddef> +#include <string_view> namespace devices { @@ -14,8 +15,9 @@ namespace devices * @brief Create a device identifier from @p major and @p minor. * @param major Device major number. * @param minor Device minor number. + * @param name Device name. */ - device(size_t major, size_t minor); + device(size_t major, size_t minor, std::string_view name); /** * @brief Virtual destructor for device. @@ -35,6 +37,12 @@ namespace devices auto minor() const -> size_t; /** + * @brief Returns the name of the device. + * @return Device name. + */ + auto name() const -> std::string_view; + + /** * @brief Check if the device is a block device. * @return true if this device is a block device, false otherwise. */ @@ -46,7 +54,7 @@ namespace devices private: size_t m_major; size_t m_minor; - // TODO BA-FS26 add name + std::string_view m_name; }; } // namespace devices diff --git a/kernel/devices/src/block_device.cpp b/kernel/devices/src/block_device.cpp index 2f0c2ca..40f842a 100644 --- a/kernel/devices/src/block_device.cpp +++ b/kernel/devices/src/block_device.cpp @@ -5,11 +5,12 @@ #include "devices/device.hpp" #include <cstddef> +#include <string_view> namespace devices { - block_device::block_device(size_t major, size_t minor, size_t block_size) - : device(major, minor) + block_device::block_device(size_t major, size_t minor, std::string_view name, size_t block_size) + : device(major, minor, name) , m_block_size(block_size) { if (m_block_size == 0) diff --git a/kernel/devices/src/device.cpp b/kernel/devices/src/device.cpp index aa5c1bb..8184321 100644 --- a/kernel/devices/src/device.cpp +++ b/kernel/devices/src/device.cpp @@ -1,12 +1,14 @@ #include "devices/device.hpp" #include <cstddef> +#include <string_view> namespace devices { - device::device(size_t major, size_t minor) + device::device(size_t major, size_t minor, std::string_view name) : m_major(major) , m_minor(minor) + , m_name(name) {} auto device::major() const -> size_t @@ -18,4 +20,9 @@ namespace devices { return m_minor; } + + auto device::name() const -> std::string_view + { + return m_name; + } } // namespace devices
\ No newline at end of file diff --git a/kernel/devices/src/storage/ram_disk/ram_disk_device.cpp b/kernel/devices/src/storage/ram_disk/ram_disk_device.cpp index 3bd3967..8e9988d 100644 --- a/kernel/devices/src/storage/ram_disk/ram_disk_device.cpp +++ b/kernel/devices/src/storage/ram_disk/ram_disk_device.cpp @@ -7,21 +7,33 @@ #include <kstd/cstring> +#include <array> #include <cstddef> +#include <string_view> namespace devices::storage::ram_disk { namespace { constexpr size_t RAM_DISK_BLOCK_SIZE = 512uz; // TODO BA-FS26 really correct / good?? + + // TODO BA-FS26 @Felix + // TODO BA-FS26 currently only names for 9 minor devices + constinit std::array<char, 5> NAME = {'r', 'a', 'm', '0', '\0'}; + + auto determine_device_name(size_t minor) -> std::string_view + { + NAME[3] = '0' + minor; + return std::string_view{NAME}; + } } // namespace ram_disk_device::ram_disk_device() // TODO BA-FS26 remove when kstd::vector is available - : block_device(0, 0, RAM_DISK_BLOCK_SIZE) + : block_device(0, 0, determine_device_name(0), RAM_DISK_BLOCK_SIZE) {} ram_disk_device::ram_disk_device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor) - : block_device(major, minor, RAM_DISK_BLOCK_SIZE) + : block_device(major, minor, determine_device_name(minor), RAM_DISK_BLOCK_SIZE) , m_boot_module(module) {} |
