diff options
Diffstat (limited to 'kernel')
44 files changed, 201 insertions, 215 deletions
diff --git a/kernel/kapi/devices/device.tests.cpp b/kernel/kapi/devices/device.tests.cpp index 138e1161..0746445c 100644 --- a/kernel/kapi/devices/device.tests.cpp +++ b/kernel/kapi/devices/device.tests.cpp @@ -141,7 +141,7 @@ SCENARIO("Devices allow access to their resources", "[kapi][devices]") WHEN("adding an MMIO resource") { - auto range = kapi::devices::mmio_range{{}, kstd::units::bytes{100}}; + auto range = kapi::devices::mmio_range{{}, kstd::bytes{100}}; device->set_resources({kapi::devices::resource{range}}); AND_WHEN("trying to get the first MMIO resource via the type-safe accessor") @@ -652,7 +652,7 @@ SCENARIO("Devices allow access to their resources", "[kapi][devices]") { auto device = kstd::make_shared<kapi::devices::device>("test_device"); - auto range = kapi::devices::mmio_range{{}, kstd::units::bytes{128}}; + auto range = kapi::devices::mmio_range{{}, kstd::bytes{128}}; auto port_a = kapi::devices::io_port{0x40, 4}; auto port_b = kapi::devices::io_port{0x50, 1}; diff --git a/kernel/kapi/filesystem.cpp b/kernel/kapi/filesystem.cpp index d37a4cf7..419c3234 100644 --- a/kernel/kapi/filesystem.cpp +++ b/kernel/kapi/filesystem.cpp @@ -43,22 +43,22 @@ namespace kapi::filesystem .and_then([=]() { return kernel::filesystem::open_file_table::get().remove_file(file_descriptor); }); } - auto read(size_t file_descriptor, std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes> + auto read(size_t file_descriptor, std::span<std::byte> buffer) -> kstd::result<kstd::bytes> { return kernel::filesystem::open_file_table::get().file(file_descriptor).and_then([=](auto descriptor) { return descriptor->read(buffer); }); } - auto write(size_t file_descriptor, std::span<std::byte const> buffer) -> kstd::result<kstd::units::bytes> + auto write(size_t file_descriptor, std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> { return kernel::filesystem::open_file_table::get().file(file_descriptor).and_then([=](auto descriptor) { return descriptor->write(buffer); }); } - auto seek(size_t file_descriptor, kstd::units::bytes offset, seek_direction direction, seek_origin origin) - -> kstd::result<kstd::units::bytes> + auto seek(size_t file_descriptor, kstd::bytes offset, seek_direction direction, seek_origin origin) + -> kstd::result<kstd::bytes> { return kernel::filesystem::open_file_table::get().file(file_descriptor).and_then([=](auto file) { return file->seek(offset, direction, origin); diff --git a/kernel/kapi/memory.cpp b/kernel/kapi/memory.cpp index 4cba7238..a0445645 100644 --- a/kernel/kapi/memory.cpp +++ b/kernel/kapi/memory.cpp @@ -117,7 +117,7 @@ namespace kapi::memory { using namespace kstd::units_literals; - auto const bitmap_bytes = kstd::units::bytes{(frame_count + 7uz) / 8uz}; + auto const bitmap_bytes = kstd::bytes{(frame_count + 7uz) / 8uz}; auto const bitmap_pages = (bitmap_bytes + page::size - 1_B) / page::size; auto const bitmap_frames = allocate_many_frames(bitmap_pages); diff --git a/kernel/kernel/devices/block_device_utils.cpp b/kernel/kernel/devices/block_device_utils.cpp index 0f85acd0..398e5e2a 100644 --- a/kernel/kernel/devices/block_device_utils.cpp +++ b/kernel/kernel/devices/block_device_utils.cpp @@ -18,15 +18,14 @@ namespace kernel::devices::block_device_utils namespace { - using block_op = kstd::result<kstd::units::bytes> (*)(size_t idx, kstd::units::bytes off, kstd::units::bytes len, - kstd::units::bytes done, - kapi::filesystem::block_special_file & device, - std::span<std::byte> scratch, std::span<std::byte> buffer); + using block_op = kstd::result<kstd::bytes> (*)(size_t idx, kstd::bytes off, kstd::bytes len, kstd::bytes done, + kapi::filesystem::block_special_file & device, + std::span<std::byte> scratch, std::span<std::byte> buffer); - auto process_blocks(kapi::filesystem::block_special_file & device, kstd::units::bytes offset, - std::span<std::byte> buffer, block_op op) -> kstd::result<kstd::units::bytes> + auto process_blocks(kapi::filesystem::block_special_file & device, kstd::bytes offset, std::span<std::byte> buffer, + block_op op) -> kstd::result<kstd::bytes> { - auto requested_size = kstd::units::bytes{buffer.size()}; + auto requested_size = kstd::bytes{buffer.size()}; if (requested_size == 0_B) { @@ -76,8 +75,8 @@ namespace kernel::devices::block_device_utils return {offset, to_transfer, device.block_size() - to_transfer}; } - auto read(kapi::filesystem::block_special_file & device, std::span<std::byte> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> + auto read(kapi::filesystem::block_special_file & device, std::span<std::byte> buffer, kstd::bytes offset) + -> kstd::result<kstd::bytes> { return process_blocks( device, offset, buffer, [](auto idx, auto off, auto len, auto done, auto & device, auto scratch, auto buffer) { @@ -97,8 +96,8 @@ namespace kernel::devices::block_device_utils }); } - auto write(kapi::filesystem::block_special_file & device, std::span<std::byte const> buffer, - kstd::units::bytes offset) -> kstd::result<kstd::units::bytes> + auto write(kapi::filesystem::block_special_file & device, std::span<std::byte const> buffer, kstd::bytes offset) + -> kstd::result<kstd::bytes> { auto non_cost_span = std::span{const_cast<std::byte *>(buffer.data()), buffer.size()}; return process_blocks(device, offset, non_cost_span, diff --git a/kernel/kernel/devices/block_device_utils.hpp b/kernel/kernel/devices/block_device_utils.hpp index 02d2f0e8..c99adf67 100644 --- a/kernel/kernel/devices/block_device_utils.hpp +++ b/kernel/kernel/devices/block_device_utils.hpp @@ -24,9 +24,9 @@ namespace kernel::devices::block_device_utils */ struct transfer_info { - kstd::units::bytes offset; - kstd::units::bytes to_transfer; - kstd::units::bytes remainder; + kstd::bytes offset; + kstd::bytes to_transfer; + kstd::bytes remainder; }; [[nodiscard]] auto calculate_transfer(kapi::filesystem::block_special_file const & device, size_t block_index) @@ -38,8 +38,8 @@ namespace kernel::devices::block_device_utils //! @param buffer The buffer to read data into. //! @param offset The offset on the block device to start reading from. //! @return The number of bytes actually read, which may be less than the requested size. - auto read(kapi::filesystem::block_special_file & device, std::span<std::byte> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes>; + auto read(kapi::filesystem::block_special_file & device, std::span<std::byte> buffer, kstd::bytes offset) + -> kstd::result<kstd::bytes>; //! @brief Write data from a buffer to a given block device. //! @@ -47,8 +47,8 @@ namespace kernel::devices::block_device_utils //! @param buffer The buffer to write data from. //! @param offset The offset on the block device to start writing to. //! @return The number of bytes actually written, which may be less than the requested size. - auto write(kapi::filesystem::block_special_file & device, std::span<std::byte const> buffer, - kstd::units::bytes offset) -> kstd::result<kstd::units::bytes>; + auto write(kapi::filesystem::block_special_file & device, std::span<std::byte const> buffer, kstd::bytes offset) + -> kstd::result<kstd::bytes>; } // namespace kernel::devices::block_device_utils #endif
\ No newline at end of file diff --git a/kernel/kernel/devices/block_device_utils.tests.cpp b/kernel/kernel/devices/block_device_utils.tests.cpp index 16a1ca87..576c9284 100644 --- a/kernel/kernel/devices/block_device_utils.tests.cpp +++ b/kernel/kernel/devices/block_device_utils.tests.cpp @@ -37,7 +37,7 @@ SCENARIO("reading from a block device with block_device_utils", "[devices][block THEN("the correct number of bytes is read") { - REQUIRE(bytes_read == kstd::units::bytes{read_buffer.size()}); + REQUIRE(bytes_read == kstd::bytes{read_buffer.size()}); } THEN("the data read matches the data written to the block device") @@ -53,7 +53,7 @@ SCENARIO("reading from a block device with block_device_utils", "[devices][block THEN("the correct number of bytes is read") { - REQUIRE(bytes_read == kstd::units::bytes{static_cast<std::size_t>(1.5 * block_size.value)}); + REQUIRE(bytes_read == kstd::bytes{static_cast<std::size_t>(1.5 * block_size.value)}); } THEN("the data read matches the expected data across block boundaries") @@ -110,7 +110,7 @@ SCENARIO("writing to a block device using block_device_utils", "[devices][block_ THEN("the correct number of bytes is written") { - REQUIRE(bytes_written == kstd::units::bytes{write_buffer.size()}); + REQUIRE(bytes_written == kstd::bytes{write_buffer.size()}); } THEN("the data written matches the data read back from the block device") @@ -133,7 +133,7 @@ SCENARIO("writing to a block device using block_device_utils", "[devices][block_ THEN("the correct number of bytes is written") { - REQUIRE(bytes_written == kstd::units::bytes{static_cast<std::size_t>(1.5 * block_size.value)}); + REQUIRE(bytes_written == kstd::bytes{static_cast<std::size_t>(1.5 * block_size.value)}); } THEN("the data written matches the data read back from the block device across block boundaries") diff --git a/kernel/kernel/drivers/pseudo/null.cpp b/kernel/kernel/drivers/pseudo/null.cpp index f6ecf5cc..d2ae81c6 100644 --- a/kernel/kernel/drivers/pseudo/null.cpp +++ b/kernel/kernel/drivers/pseudo/null.cpp @@ -47,14 +47,14 @@ namespace kernel::drivers::pseudo struct null_node final : kapi::filesystem::character_special_file { public: - [[nodiscard]] auto read(std::span<std::byte>) -> kstd::result<kstd::units::bytes> override + [[nodiscard]] auto read(std::span<std::byte>) -> kstd::result<kstd::bytes> override { return 0_B; } - auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::units::bytes> override + auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> override { - return kstd::units::bytes{buffer.size()}; + return kstd::bytes{buffer.size()}; } }; diff --git a/kernel/kernel/drivers/pseudo/zero.cpp b/kernel/kernel/drivers/pseudo/zero.cpp index e486a985..0d5e0f8f 100644 --- a/kernel/kernel/drivers/pseudo/zero.cpp +++ b/kernel/kernel/drivers/pseudo/zero.cpp @@ -47,15 +47,15 @@ namespace kernel::drivers::pseudo struct zero_node final : kapi::filesystem::character_special_file { public: - [[nodiscard]] auto read(std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes> override + [[nodiscard]] auto read(std::span<std::byte> buffer) -> kstd::result<kstd::bytes> override { std::ranges::fill(buffer, std::byte{0}); - return kstd::units::bytes{buffer.size()}; + return kstd::bytes{buffer.size()}; } - auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::units::bytes> override + auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> override { - return kstd::units::bytes{buffer.size()}; + return kstd::bytes{buffer.size()}; } }; diff --git a/kernel/kernel/drivers/storage/ram_disk.cpp b/kernel/kernel/drivers/storage/ram_disk.cpp index 778feeeb..186f8cbc 100644 --- a/kernel/kernel/drivers/storage/ram_disk.cpp +++ b/kernel/kernel/drivers/storage/ram_disk.cpp @@ -54,10 +54,10 @@ namespace kernel::drivers::storage {} [[nodiscard]] auto read_block(std::size_t block_index, std::span<std::byte> buffer) - -> kstd::result<kstd::units::bytes> override + -> kstd::result<kstd::bytes> override { auto const info = devices::block_device_utils::calculate_transfer(*this, block_index); - auto const transfer_size = std::min(info.to_transfer, kstd::units::bytes{buffer.size()}); + auto const transfer_size = std::min(info.to_transfer, kstd::bytes{buffer.size()}); if (transfer_size > 0_B) { @@ -68,11 +68,10 @@ namespace kernel::drivers::storage return transfer_size; } - auto write_block(std::size_t block_index, std::span<std::byte const> buffer) - -> kstd::result<kstd::units::bytes> override + auto write_block(std::size_t block_index, std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> override { auto const info = devices::block_device_utils::calculate_transfer(*this, block_index); - auto const transfer_size = std::min(info.to_transfer, kstd::units::bytes{buffer.size()}); + auto const transfer_size = std::min(info.to_transfer, kstd::bytes{buffer.size()}); if (transfer_size > 0_B) { @@ -83,14 +82,14 @@ namespace kernel::drivers::storage return transfer_size; } - [[nodiscard]] auto block_size() const -> kstd::units::bytes override + [[nodiscard]] auto block_size() const -> kstd::bytes override { return kapi::memory::page_size; } - [[nodiscard]] auto capacity() const -> kstd::units::bytes override + [[nodiscard]] auto capacity() const -> kstd::bytes override { - return kstd::units::bytes{m_module.size}; + return kstd::bytes{m_module.size}; } private: diff --git a/kernel/kernel/filesystem/devfs/inode.cpp b/kernel/kernel/filesystem/devfs/inode.cpp index 3f222f31..4153d3ac 100644 --- a/kernel/kernel/filesystem/devfs/inode.cpp +++ b/kernel/kernel/filesystem/devfs/inode.cpp @@ -10,12 +10,12 @@ using namespace kstd::units_literals; namespace kernel::filesystem::devfs { - auto inode::read(std::span<std::byte>, kstd::units::bytes) const -> kstd::result<kstd::units::bytes> + auto inode::read(std::span<std::byte>, kstd::bytes) const -> kstd::result<kstd::bytes> { return 0_B; } - auto inode::write(std::span<std::byte const>, kstd::units::bytes) -> kstd::result<kstd::units::bytes> + auto inode::write(std::span<std::byte const>, kstd::bytes) -> kstd::result<kstd::bytes> { return 0_B; } diff --git a/kernel/kernel/filesystem/devfs/inode.hpp b/kernel/kernel/filesystem/devfs/inode.hpp index 6639d180..a68baef6 100644 --- a/kernel/kernel/filesystem/devfs/inode.hpp +++ b/kernel/kernel/filesystem/devfs/inode.hpp @@ -24,8 +24,8 @@ namespace kernel::filesystem::devfs @param size Number of bytes requested. @return Number of bytes read (always 0 because this inode does not expose file data). */ - [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> override; + [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::bytes offset) const + -> kstd::result<kstd::bytes> override; /** @brief Writes to the devfs directory inode. @@ -34,8 +34,7 @@ namespace kernel::filesystem::devfs @param size Number of bytes requested. @return Number of bytes written (always 0 because writes are not supported for this inode). */ - auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> override; + auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> override; /** @brief Check if this inode represents a directory. diff --git a/kernel/kernel/filesystem/device_inode.cpp b/kernel/kernel/filesystem/device_inode.cpp index 53201e08..f45023d3 100644 --- a/kernel/kernel/filesystem/device_inode.cpp +++ b/kernel/kernel/filesystem/device_inode.cpp @@ -40,8 +40,7 @@ namespace kernel::filesystem } } - auto device_inode::read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> + auto device_inode::read(std::span<std::byte> buffer, kstd::bytes offset) const -> kstd::result<kstd::bytes> { if (m_device->state() == kapi::devices::state::removed) { @@ -62,8 +61,7 @@ namespace kernel::filesystem return kstd::failure(vfs_errc::no_such_device); } - auto device_inode::write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> + auto device_inode::write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> { if (m_device->state() == kapi::devices::state::removed) { diff --git a/kernel/kernel/filesystem/device_inode.hpp b/kernel/kernel/filesystem/device_inode.hpp index 759119e7..663974ed 100644 --- a/kernel/kernel/filesystem/device_inode.hpp +++ b/kernel/kernel/filesystem/device_inode.hpp @@ -42,8 +42,8 @@ namespace kernel::filesystem @param size The number of bytes to read. @return The number of bytes read. */ - [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> override; + [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::bytes offset) const + -> kstd::result<kstd::bytes> override; /** @brief Write data to the device inode (and in the background from the associated device) from a @p buffer, starting @@ -53,8 +53,7 @@ namespace kernel::filesystem @param size The number of bytes to write. @return The number of bytes written. */ - auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> override; + auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> override; /** @brief Get the associated device. diff --git a/kernel/kernel/filesystem/device_inode.tests.cpp b/kernel/kernel/filesystem/device_inode.tests.cpp index 2a5e54c7..c4b117fb 100644 --- a/kernel/kernel/filesystem/device_inode.tests.cpp +++ b/kernel/kernel/filesystem/device_inode.tests.cpp @@ -39,12 +39,12 @@ namespace struct mock_origin_inode : kernel::filesystem::inode { - auto read(std::span<std::byte>, kstd::units::bytes) const -> kstd::result<kstd::units::bytes> override + auto read(std::span<std::byte>, kstd::bytes) const -> kstd::result<kstd::bytes> override { return 0_B; } - auto write(std::span<std::byte const>, kstd::units::bytes) -> kstd::result<kstd::units::bytes> override + auto write(std::span<std::byte const>, kstd::bytes) -> kstd::result<kstd::bytes> override { return 0_B; } diff --git a/kernel/kernel/filesystem/device_number_registry.tests.cpp b/kernel/kernel/filesystem/device_number_registry.tests.cpp index 865a6de9..913acf9a 100644 --- a/kernel/kernel/filesystem/device_number_registry.tests.cpp +++ b/kernel/kernel/filesystem/device_number_registry.tests.cpp @@ -23,7 +23,7 @@ using namespace kstd::units_literals; namespace { auto make_bound_block_device(kapi::devices::facet_registry & facets, kstd::string const & name, - kstd::units::bytes block_size, std::optional<std::uint8_t> major) + kstd::bytes block_size, std::optional<std::uint8_t> major) -> kstd::shared_ptr<kernel::tests::devices::block_device> { auto device = kstd::make_shared<kernel::tests::devices::block_device>(name, block_size); diff --git a/kernel/kernel/filesystem/ext2/filesystem.cpp b/kernel/kernel/filesystem/ext2/filesystem.cpp index 08f827a6..7a1153e4 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.cpp +++ b/kernel/kernel/filesystem/ext2/filesystem.cpp @@ -163,7 +163,7 @@ namespace kernel::filesystem::ext2 return read_inode(entry->inode); } - bytes_read += kstd::units::bytes{entry->rec_len}; + bytes_read += kstd::bytes{entry->rec_len}; entry = reinterpret_cast<linked_directory_entry const *>(buffer.data() + bytes_read); } } @@ -273,21 +273,21 @@ namespace kernel::filesystem::ext2 while (true) { auto const * entry = reinterpret_cast<linked_directory_entry const *>(buffer.data() + offset); - if (offset + kstd::units::bytes{entry->rec_len} >= block_size()) + if (offset + kstd::bytes{entry->rec_len} >= block_size()) { break; } - offset += kstd::units::bytes{entry->rec_len}; + offset += kstd::bytes{entry->rec_len}; } auto const file_type = map_inode_mode_to_file_type(mode); auto const name_len = static_cast<uint8_t>(name.size()); - auto const needed_rec_len = static_cast<kstd::units::bytes>((8u + name_len + 3u) & ~3u); + auto const needed_rec_len = static_cast<kstd::bytes>((8u + name_len + 3u) & ~3u); auto * last_entry = reinterpret_cast<linked_directory_entry *>(buffer.data() + offset); - auto const last_entry_actual_len = static_cast<kstd::units::bytes>((8u + last_entry->name_len + 3u) & ~3u); + auto const last_entry_actual_len = static_cast<kstd::bytes>((8u + last_entry->name_len + 3u) & ~3u); - if (kstd::units::bytes{last_entry->rec_len} - last_entry_actual_len >= needed_rec_len) + if (kstd::bytes{last_entry->rec_len} - last_entry_actual_len >= needed_rec_len) { last_entry->rec_len = last_entry_actual_len.value; write_directory_entry_to_buffer(buffer.data(), offset + last_entry_actual_len, child_inode_number, name, @@ -339,7 +339,7 @@ namespace kernel::filesystem::ext2 kstd::vector<uint8_t> buffer(block_size().value, 0); write_directory_entry_to_buffer(buffer.data(), 0_B, new_inode->number(), ".", 2); - auto const dot_actual_len = static_cast<kstd::units::bytes>((8u + 1 + 3u) & ~3u); + auto const dot_actual_len = static_cast<kstd::bytes>((8u + 1 + 3u) & ~3u); auto * entry = reinterpret_cast<linked_directory_entry *>(buffer.data()); entry->rec_len = dot_actual_len.value; @@ -355,7 +355,7 @@ namespace kernel::filesystem::ext2 .transform([](auto) {}); } - auto filesystem::write_directory_entry_to_buffer(uint8_t * block_buffer, kstd::units::bytes offset, + auto filesystem::write_directory_entry_to_buffer(uint8_t * block_buffer, kstd::bytes offset, uint32_t child_inode_number, std::string_view name, uint8_t file_type) -> void { @@ -402,7 +402,7 @@ namespace kernel::filesystem::ext2 } } - auto filesystem::calculate_inode_offset(uint32_t inode_number) const -> kstd::result<kstd::units::bytes> + auto filesystem::calculate_inode_offset(uint32_t inode_number) const -> kstd::result<kstd::bytes> { auto const inodes_per_group = m_superblock.inodes_per_group; auto const block_group_index = (inode_number - 1) / inodes_per_group; @@ -699,13 +699,13 @@ namespace kernel::filesystem::ext2 return kstd::success(); } - auto filesystem::read_block(uint32_t block_number, void * buffer) const -> kstd::result<kstd::units::bytes> + auto filesystem::read_block(uint32_t block_number, void * buffer) const -> kstd::result<kstd::bytes> { auto const block_offset = static_cast<size_t>(block_number) * block_size(); return m_backing_inode->read(std::span{static_cast<std::byte *>(buffer), block_size().value}, block_offset); } - auto filesystem::write_block(uint32_t block_number, void const * buffer) -> kstd::result<kstd::units::bytes> + auto filesystem::write_block(uint32_t block_number, void const * buffer) -> kstd::result<kstd::bytes> { auto const block_offset = static_cast<size_t>(block_number) * block_size(); return m_backing_inode->write(std::span{static_cast<std::byte const *>(buffer), block_size().value}, block_offset); @@ -784,9 +784,9 @@ namespace kernel::filesystem::ext2 return block_numbers_per_doubly_indirect_block() * block_numbers_per_block(); } - auto filesystem::block_size() const -> kstd::units::bytes + auto filesystem::block_size() const -> kstd::bytes { - return kstd::units::bytes{constants::base_block_size.value << m_superblock.log_block_size}; + return kstd::bytes{constants::base_block_size.value << m_superblock.log_block_size}; } auto filesystem::revision_level() const -> uint32_t @@ -794,9 +794,9 @@ namespace kernel::filesystem::ext2 return m_superblock.rev_level; } - auto filesystem::inode_size() const -> kstd::units::bytes + auto filesystem::inode_size() const -> kstd::bytes { - return kstd::units::bytes(revision_level() == constants::good_old_revision ? 128 : m_superblock.inode_size); + return kstd::bytes(revision_level() == constants::good_old_revision ? 128 : m_superblock.inode_size); } auto filesystem::inode_block_count(inode_data const & data) const -> uint32_t @@ -809,7 +809,7 @@ namespace kernel::filesystem::ext2 data.blocks += delta * (2 << m_superblock.log_block_size); } - auto filesystem::block_group_descriptor_table_offset() const -> kstd::units::bytes + auto filesystem::block_group_descriptor_table_offset() const -> kstd::bytes { return block_size() == 1024_B ? 2 * block_size() : block_size(); } diff --git a/kernel/kernel/filesystem/ext2/filesystem.hpp b/kernel/kernel/filesystem/ext2/filesystem.hpp index b8794a14..d7132f39 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.hpp +++ b/kernel/kernel/filesystem/ext2/filesystem.hpp @@ -29,8 +29,8 @@ namespace kernel::filesystem::ext2 */ namespace constants { - constexpr kstd::units::bytes inline base_block_size = kstd::units::bytes{1024}; - constexpr kstd::units::bytes inline superblock_offset = base_block_size; + constexpr kstd::bytes inline base_block_size = kstd::bytes{1024}; + constexpr kstd::bytes inline superblock_offset = base_block_size; constexpr uint16_t inline magic_number = 0xEF53; constexpr uint32_t inline good_old_revision = 0; @@ -89,7 +89,7 @@ namespace kernel::filesystem::ext2 @brief Gets the size of a block in the filesystem. @return The size of a block in bytes. */ - [[nodiscard]] auto block_size() const -> kstd::units::bytes; + [[nodiscard]] auto block_size() const -> kstd::bytes; /** @brief Gets the revision level of the filesystem. @@ -103,7 +103,7 @@ namespace kernel::filesystem::ext2 @param buffer The buffer to read the block data into. @return The number of bytes read. */ - auto read_block(uint32_t block_number, void * buffer) const -> kstd::result<kstd::units::bytes>; + auto read_block(uint32_t block_number, void * buffer) const -> kstd::result<kstd::bytes>; /** @brief Writes a block of data from the provided buffer to the backing device. @@ -111,7 +111,7 @@ namespace kernel::filesystem::ext2 @param buffer The buffer containing the data to write. @return The number of bytes written. */ - auto write_block(uint32_t block_number, void const * buffer) -> kstd::result<kstd::units::bytes>; + auto write_block(uint32_t block_number, void const * buffer) -> kstd::result<kstd::bytes>; /** @brief Allocates a specified number of blocks. @@ -124,7 +124,7 @@ namespace kernel::filesystem::ext2 @brief Gets the size of an inode in the filesystem. @return The size of an inode in bytes. */ - [[nodiscard]] auto inode_size() const -> kstd::units::bytes; + [[nodiscard]] auto inode_size() const -> kstd::bytes; /** @brief Gets the number of blocks allocated to an inode. @@ -179,14 +179,14 @@ namespace kernel::filesystem::ext2 -> kstd::result<void>; auto init_directory(kstd::shared_ptr<kernel::filesystem::ext2::inode> const & new_inode, kernel::filesystem::ext2::inode * parent_inode) -> kstd::result<void>; - auto write_directory_entry_to_buffer(uint8_t * block_buffer, kstd::units::bytes offset, uint32_t child_inode_number, + auto write_directory_entry_to_buffer(uint8_t * block_buffer, kstd::bytes offset, uint32_t child_inode_number, std::string_view name, uint8_t file_type) -> void; - [[nodiscard]] auto calculate_inode_offset(uint32_t inode_number) const -> kstd::result<kstd::units::bytes>; + [[nodiscard]] auto calculate_inode_offset(uint32_t inode_number) const -> kstd::result<kstd::bytes>; [[nodiscard]] auto read_inode(uint32_t inode_number) const -> kstd::result<kstd::shared_ptr<inode>>; [[nodiscard]] auto read_block_number_at_index(uint32_t block_number, size_t index) const -> kstd::result<uint32_t>; - [[nodiscard]] auto block_group_descriptor_table_offset() const -> kstd::units::bytes; + [[nodiscard]] auto block_group_descriptor_table_offset() const -> kstd::bytes; [[nodiscard]] auto block_numbers_per_block() const -> size_t; [[nodiscard]] auto block_numbers_per_singly_indirect_block() const -> size_t; diff --git a/kernel/kernel/filesystem/ext2/filesystem.tests.cpp b/kernel/kernel/filesystem/ext2/filesystem.tests.cpp index 6bd17188..f6ade274 100644 --- a/kernel/kernel/filesystem/ext2/filesystem.tests.cpp +++ b/kernel/kernel/filesystem/ext2/filesystem.tests.cpp @@ -150,11 +150,11 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_fixture, std::vector{std::byte{'H'}, std::byte{'e'}, std::byte{'l'}, std::byte{'l'}, std::byte{'o'}, std::byte{' '}, std::byte{'W'}, std::byte{'o'}, std::byte{'r'}, std::byte{'l'}, std::byte{'d'}, std::byte{'!'}}; auto bytes_written = new_inode.value()->write(buffer, 0_B); - REQUIRE(bytes_written == kstd::units::bytes{buffer.size()}); + REQUIRE(bytes_written == kstd::bytes{buffer.size()}); auto read_buffer = std::vector<std::byte>(5, std::byte{0xAA}); auto bytes_read = new_inode.value()->read(read_buffer, 0_B); - REQUIRE(bytes_read == kstd::units::bytes{read_buffer.size()}); + REQUIRE(bytes_read == kstd::bytes{read_buffer.size()}); std::string_view result{reinterpret_cast<char *>(read_buffer.data()), static_cast<size_t>(*bytes_read)}; REQUIRE(result == "Hello"); @@ -276,7 +276,7 @@ SCENARIO("Ext2 block writing includes direct and all indirect levels", "[filesys auto fs = kernel::filesystem::ext2::filesystem{}; REQUIRE(fs.mount(dev_inode)); - auto read_u32 = [&](kstd::units::bytes offset) -> uint32_t { + auto read_u32 = [&](kstd::bytes offset) -> uint32_t { auto value = uint32_t{0}; std::memcpy(&value, device->data.data() + offset, sizeof(value)); return value; @@ -301,12 +301,12 @@ SCENARIO("Ext2 block writing includes direct and all indirect levels", "[filesys REQUIRE(fs.write_global_block_number_to_inode_block_index(singly_start, inode_data, singly_global_block_number)); REQUIRE(inode_data.block[12] == 16); - REQUIRE(read_u32(static_cast<kstd::units::bytes>(inode_data.block[12]) * block_size.value) == + REQUIRE(read_u32(static_cast<kstd::bytes>(inode_data.block[12]) * block_size.value) == singly_global_block_number); REQUIRE(fs.write_global_block_number_to_inode_block_index(singly_start + 1, inode_data, singly_global_block_number + 1)); - REQUIRE(read_u32(static_cast<kstd::units::bytes>(inode_data.block[12]) * block_size.value + + REQUIRE(read_u32(static_cast<kstd::bytes>(inode_data.block[12]) * block_size.value + 1 * kstd::size_of<uint32_t>()) == singly_global_block_number + 1); REQUIRE(fs.write_global_block_number_to_inode_block_index(doubly_start, inode_data, doubly_global_block_number)); diff --git a/kernel/kernel/filesystem/ext2/inode.cpp b/kernel/kernel/filesystem/ext2/inode.cpp index cba0e70c..5f161e82 100644 --- a/kernel/kernel/filesystem/ext2/inode.cpp +++ b/kernel/kernel/filesystem/ext2/inode.cpp @@ -31,12 +31,12 @@ namespace kernel::filesystem::ext2 } } - auto inode::read(std::span<std::byte> buffer, kstd::units::bytes offset) const -> kstd::result<kstd::units::bytes> + auto inode::read(std::span<std::byte> buffer, kstd::bytes offset) const -> kstd::result<kstd::bytes> { auto const max_readable = this->size() - offset; - auto const requested_size = std::min(kstd::units::bytes{buffer.size()}, max_readable); + auto const requested_size = std::min(kstd::bytes{buffer.size()}, max_readable); - if (is_symbolic_link() && this->size() <= kstd::units::bytes{sizeof(m_data.block)}) + if (is_symbolic_link() && this->size() <= kstd::bytes{sizeof(m_data.block)}) { auto inline_target = reinterpret_cast<uint8_t const *>(m_data.block.data()); kstd::libc::memcpy(buffer.data(), inline_target + offset, requested_size.value); @@ -83,7 +83,7 @@ namespace kernel::filesystem::ext2 return bytes_read; } - auto inode::write(std::span<std::byte const> buffer, kstd::units::bytes offset) -> kstd::result<kstd::units::bytes> + auto inode::write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> { if (!is_regular()) { @@ -93,7 +93,7 @@ namespace kernel::filesystem::ext2 // TODO check maximum file size of filesystem // TODO handle sparse files - auto const new_inode_size = std::max(this->size(), offset + kstd::units::bytes{buffer.size()}); + auto const new_inode_size = std::max(this->size(), offset + kstd::bytes{buffer.size()}); auto const current_block_count = m_filesystem->inode_block_count(m_data); auto const max_new_inode_size_without_new_blocks = current_block_count * m_filesystem->block_size(); @@ -116,7 +116,7 @@ namespace kernel::filesystem::ext2 auto bytes_written = 0_B; - while (bytes_written < kstd::units::bytes{buffer.size()}) + while (bytes_written < kstd::bytes{buffer.size()}) { auto const block_number = m_filesystem->map_inode_block_index_to_global_block_number(block_index, m_data); // TODO BA-FS26 if blocknumber == 0 --> handle sparse file @@ -126,7 +126,7 @@ namespace kernel::filesystem::ext2 } auto const bytes_to_write = - std::min(kstd::units::bytes{buffer.size()} - bytes_written, m_filesystem->block_size() - in_block_offset); + std::min(kstd::bytes{buffer.size()} - bytes_written, m_filesystem->block_size() - in_block_offset); auto const block_start_offset = block_number.value() * m_filesystem->block_size(); auto const write_offset = block_start_offset + in_block_offset; @@ -244,7 +244,7 @@ namespace kernel::filesystem::ext2 }; } - auto inode::size() const -> kstd::units::bytes + auto inode::size() const -> kstd::bytes { uint64_t size = m_data.size; @@ -253,10 +253,10 @@ namespace kernel::filesystem::ext2 size |= static_cast<uint64_t>(m_data.dir_acl) << 32; } - return kstd::units::bytes{size}; + return kstd::bytes{size}; } - auto inode::set_size(kstd::units::bytes new_size) -> void + auto inode::set_size(kstd::bytes new_size) -> void { if (m_filesystem->revision_level() > constants::good_old_revision && is_regular()) { diff --git a/kernel/kernel/filesystem/ext2/inode.hpp b/kernel/kernel/filesystem/ext2/inode.hpp index 9d145dfc..7937c643 100644 --- a/kernel/kernel/filesystem/ext2/inode.hpp +++ b/kernel/kernel/filesystem/ext2/inode.hpp @@ -61,8 +61,8 @@ namespace kernel::filesystem::ext2 @param size Number of bytes requested. @return Number of bytes read. */ - [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> override; + [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::bytes offset) const + -> kstd::result<kstd::bytes> override; /** @brief Writes to the ext2 inode into a @p buffer, starting at the specified @p offset and for a given @p size. @@ -71,8 +71,7 @@ namespace kernel::filesystem::ext2 @param size Number of bytes requested. @return Number of bytes written. */ - auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> override; + auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> override; /** @brief Appends the specified number of blocks to the inode. @@ -123,13 +122,13 @@ namespace kernel::filesystem::ext2 @brief Get the size of the file represented by this inode. @return The size of the file in bytes. */ - [[nodiscard]] auto size() const -> kstd::units::bytes; + [[nodiscard]] auto size() const -> kstd::bytes; /** @brief Set the size of the file represented by this inode. @param new_size The new size of the file in bytes. */ - auto set_size(kstd::units::bytes new_size) -> void; + auto set_size(kstd::bytes new_size) -> void; /** @brief Get the inode number of this inode. diff --git a/kernel/kernel/filesystem/ext2/inode.tests.cpp b/kernel/kernel/filesystem/ext2/inode.tests.cpp index 78695b51..13e9d414 100644 --- a/kernel/kernel/filesystem/ext2/inode.tests.cpp +++ b/kernel/kernel/filesystem/ext2/inode.tests.cpp @@ -169,7 +169,7 @@ SCENARIO("Ext2 inode handles zeros in block mappings as file holes", "[filesyste THEN("correct number of bytes are read and holes are returned as zeros") { auto const bytes_read = inode.read(buffer, 0_B); - REQUIRE(bytes_read == kstd::units::bytes{data.size}); + REQUIRE(bytes_read == kstd::bytes{data.size}); auto const text = std::string_view{reinterpret_cast<char const *>(buffer.data()), bytes_read->value}; REQUIRE(text.substr(0, 5) == "Hello"); @@ -211,7 +211,7 @@ SCENARIO("Ext2 inode handles zeros in block mappings as file holes", "[filesyste THEN("correct number of bytes are read and holes are returned as zeros") { auto const bytes_read = inode.read(buffer, 0_B); - REQUIRE(bytes_read == kstd::units::bytes{data.size}); + REQUIRE(bytes_read == kstd::bytes{data.size}); auto const text = std::string_view{reinterpret_cast<char const *>(buffer.data()), bytes_read->value}; REQUIRE(text.substr(0, 5) == "Hello"); @@ -247,7 +247,7 @@ SCENARIO("Ext2 inode handles zeros in block mappings as file holes", "[filesyste THEN("all direct blocks are zero when singly indirect block pointer is zero") { auto const bytes_read = inode.read(buffer, 0_B); - REQUIRE(bytes_read == kstd::units::bytes{buffer.size()}); + REQUIRE(bytes_read == kstd::bytes{buffer.size()}); REQUIRE(std::ranges::all_of(buffer, [](std::byte c) { return c == std::byte{0x00}; })); } } @@ -280,7 +280,7 @@ SCENARIO("Ext2 inode read across block boundaries", "[filesystem][ext2][inode]") THEN("reading across the block boundary returns the combined content") { auto const bytes_read = inode.read(buffer, block_size - 6_B); - REQUIRE(bytes_read == kstd::units::bytes{12}); + REQUIRE(bytes_read == kstd::bytes{12}); auto const text = std::string_view{reinterpret_cast<char const *>(buffer.data()), bytes_read->value}; REQUIRE(text == "Hello World!"); @@ -318,11 +318,11 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_fixture, "Ext2 in std::byte{'r'}, std::byte{'l'}, std::byte{'d'}, std::byte{'!'}}; auto const bytes_written = file.value()->write(write_buffer, 0_B); - REQUIRE(bytes_written == kstd::units::bytes{12}); + REQUIRE(bytes_written == kstd::bytes{12}); auto read_buffer = kstd::vector<std::byte>(42, std::byte{0x00}); auto const bytes_read = file.value()->read(read_buffer, 0_B); - REQUIRE(bytes_read == kstd::units::bytes{12}); + REQUIRE(bytes_read == kstd::bytes{12}); auto const text = std::string_view{reinterpret_cast<char const *>(read_buffer.data()), bytes_read->value}; REQUIRE(text == "Hello World!"); @@ -450,7 +450,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]" { auto const offset = block_size - 4_B; auto const bytes_written = inode.write(buffer, offset); - REQUIRE(bytes_written == kstd::units::bytes{buffer.size()}); + REQUIRE(bytes_written == kstd::bytes{buffer.size()}); auto const text = std::string_view{ reinterpret_cast<char const *>(device->data.data() + 21 * block_size.value - 4), bytes_written->value}; @@ -461,7 +461,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]" REQUIRE(block_bitmap == read_block_bitmap); auto read_inode = do_read_inode(); - REQUIRE(offset + kstd::units::bytes{buffer.size()} == read_inode.size()); + REQUIRE(offset + kstd::bytes{buffer.size()} == read_inode.size()); REQUIRE(inode_data.blocks == read_inode.data().blocks); auto const current_blocks = inode_data.block; @@ -473,7 +473,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]" { auto const offset = block_size * 2 - 4_B; auto const bytes_written = inode.write(buffer, offset); - REQUIRE(bytes_written == kstd::units::bytes{buffer.size()}); + REQUIRE(bytes_written == kstd::bytes{buffer.size()}); auto read_buffer = std::vector<std::byte>(buffer.size(), std::byte{0x00}); auto const bytes_read = inode.read(read_buffer, offset); @@ -488,7 +488,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]" REQUIRE(expected_block_bitmap == read_block_bitmap); auto read_inode = do_read_inode(); - REQUIRE(offset + kstd::units::bytes{buffer.size()} == read_inode.size()); + REQUIRE(offset + kstd::bytes{buffer.size()} == read_inode.size()); REQUIRE(inode_data.blocks + 2 == read_inode.data().blocks); auto expected_blocks = inode_data.block; @@ -535,7 +535,7 @@ SCENARIO("Ext2 inode get_size() and set_size() handles size correctly depending data.size = 256; data.dir_acl = 32; - auto const verify_size_and_set_size = [&](uint16_t mode, kstd::units::bytes expected_initial_size, + auto const verify_size_and_set_size = [&](uint16_t mode, kstd::bytes expected_initial_size, uint32_t expected_dir_acl_after_set_size) { data.mode = mode; @@ -578,7 +578,7 @@ SCENARIO("Ext2 inode get_size() and set_size() handles size correctly depending data.size = 256; data.dir_acl = 32; - auto const verify_size_and_set_size = [&](uint16_t mode, kstd::units::bytes expected_initial_size, + auto const verify_size_and_set_size = [&](uint16_t mode, kstd::bytes expected_initial_size, uint32_t expected_dir_acl_after_set_size) { data.mode = mode; diff --git a/kernel/kernel/filesystem/inode.hpp b/kernel/kernel/filesystem/inode.hpp index 7ebac995..f0fbf689 100644 --- a/kernel/kernel/filesystem/inode.hpp +++ b/kernel/kernel/filesystem/inode.hpp @@ -27,8 +27,8 @@ namespace kernel::filesystem //! @param offset Read offset in bytes. //! @param size Number of bytes requested. //! @return The number of bytes read on success, an error otherwise. - [[nodiscard]] virtual auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> = 0; + [[nodiscard]] virtual auto read(std::span<std::byte> buffer, kstd::bytes offset) const + -> kstd::result<kstd::bytes> = 0; //! Writes data from a buffer into this inode. //! @@ -36,8 +36,7 @@ namespace kernel::filesystem //! @param offset Write offset in bytes. //! @param size Number of bytes to write. //! @return The number of bytes written on success, an error otherwise. - virtual auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> = 0; + virtual auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> = 0; //! Check if this inode is a directory. //! diff --git a/kernel/kernel/filesystem/open_file_descriptor.cpp b/kernel/kernel/filesystem/open_file_descriptor.cpp index 379b0708..a6d97b8e 100644 --- a/kernel/kernel/filesystem/open_file_descriptor.cpp +++ b/kernel/kernel/filesystem/open_file_descriptor.cpp @@ -25,7 +25,7 @@ namespace kernel::filesystem } } - auto open_file_descriptor::read(std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes> + auto open_file_descriptor::read(std::span<std::byte> buffer) -> kstd::result<kstd::bytes> { if (auto result = m_dentry->get_inode()->read(buffer, m_offset); !result) { @@ -39,7 +39,7 @@ namespace kernel::filesystem } } - auto open_file_descriptor::write(std::span<std::byte const> buffer) -> kstd::result<kstd::units::bytes> + auto open_file_descriptor::write(std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> { if (auto result = m_dentry->get_inode()->write(buffer, m_offset); !result) { @@ -53,8 +53,8 @@ namespace kernel::filesystem } } - auto open_file_descriptor::seek(kstd::units::bytes offset, kapi::filesystem::seek_direction direction, - kapi::filesystem::seek_origin origin) -> kstd::result<kstd::units::bytes> + auto open_file_descriptor::seek(kstd::bytes offset, kapi::filesystem::seek_direction direction, + kapi::filesystem::seek_origin origin) -> kstd::result<kstd::bytes> { switch (origin) { @@ -96,7 +96,7 @@ namespace kernel::filesystem return kstd::failure(vfs_errc::invalid_argument); } - auto open_file_descriptor::offset() const -> kstd::units::bytes + auto open_file_descriptor::offset() const -> kstd::bytes { return m_offset; } diff --git a/kernel/kernel/filesystem/open_file_descriptor.hpp b/kernel/kernel/filesystem/open_file_descriptor.hpp index f0b55d72..25dbf719 100644 --- a/kernel/kernel/filesystem/open_file_descriptor.hpp +++ b/kernel/kernel/filesystem/open_file_descriptor.hpp @@ -38,7 +38,7 @@ namespace kernel::filesystem @param buffer The buffer to read data into. @return The number of bytes read. */ - auto read(std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes>; + auto read(std::span<std::byte> buffer) -> kstd::result<kstd::bytes>; /** @brief Writes data to the open file descriptor from a @p buffer, starting at the current file offset and for a @@ -47,7 +47,7 @@ namespace kernel::filesystem @param buffer The buffer to write data from. @return The number of bytes written. */ - auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::units::bytes>; + auto write(std::span<std::byte const> buffer) -> kstd::result<kstd::bytes>; //! Move the read/write offset of the file. //! @@ -55,14 +55,14 @@ namespace kernel::filesystem //! @param offset The direction to seek in, relative to the given origin. //! @param origin The origin of the offset. //! @return the new offset on success, an error otherwise. - auto seek(kstd::units::bytes offset, kapi::filesystem::seek_direction direction, - kapi::filesystem::seek_origin origin) -> kstd::result<kstd::units::bytes>; + auto seek(kstd::bytes offset, kapi::filesystem::seek_direction direction, kapi::filesystem::seek_origin origin) + -> kstd::result<kstd::bytes>; /** @brief Returns the current file offset for this open file descriptor. @return The current file offset in bytes. */ - [[nodiscard]] auto offset() const -> kstd::units::bytes; + [[nodiscard]] auto offset() const -> kstd::bytes; /** @brief Return a reference to the dentry associated with this open file descriptor. @@ -72,7 +72,7 @@ namespace kernel::filesystem private: kstd::shared_ptr<dentry> m_dentry; - kstd::units::bytes m_offset; + kstd::bytes m_offset; }; } // namespace kernel::filesystem diff --git a/kernel/kernel/filesystem/open_file_descriptor.tests.cpp b/kernel/kernel/filesystem/open_file_descriptor.tests.cpp index ec86e8d3..a2e30c16 100644 --- a/kernel/kernel/filesystem/open_file_descriptor.tests.cpp +++ b/kernel/kernel/filesystem/open_file_descriptor.tests.cpp @@ -118,12 +118,12 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Ope { kstd::vector<std::byte> buffer(4); auto bytes_read_1 = ofd->read(std::span{buffer}.first(buffer.size() / 2)); - REQUIRE(bytes_read_1 == kstd::units::bytes{buffer.size() / 2}); - REQUIRE(ofd->offset() == kstd::units::bytes{buffer.size() / 2}); + REQUIRE(bytes_read_1 == kstd::bytes{buffer.size() / 2}); + REQUIRE(ofd->offset() == kstd::bytes{buffer.size() / 2}); auto bytes_read_2 = ofd->read(std::span{buffer}.last(buffer.size() / 2)); - REQUIRE(bytes_read_2 == kstd::units::bytes{buffer.size() / 2}); - REQUIRE(ofd->offset() == kstd::units::bytes{buffer.size()}); + REQUIRE(bytes_read_2 == kstd::bytes{buffer.size() / 2}); + REQUIRE(ofd->offset() == kstd::bytes{buffer.size()}); std::string_view buffer_as_str{reinterpret_cast<char *>(buffer.data()), bytes_read_1->value + bytes_read_2->value}; @@ -142,12 +142,12 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Ope { auto write_buffer = kstd::vector<std::byte>(8, std::byte{0xAA}); auto const bytes_written_1 = ofd->write(std::span{write_buffer}.first(write_buffer.size() / 2)); - REQUIRE(bytes_written_1 == kstd::units::bytes{write_buffer.size() / 2}); - REQUIRE(ofd->offset() == kstd::units::bytes{write_buffer.size() / 2}); + REQUIRE(bytes_written_1 == kstd::bytes{write_buffer.size() / 2}); + REQUIRE(ofd->offset() == kstd::bytes{write_buffer.size() / 2}); auto const bytes_written_2 = ofd->write(std::span{write_buffer}.last(write_buffer.size() / 2)); - REQUIRE(bytes_written_2 == kstd::units::bytes{write_buffer.size() / 2}); - REQUIRE(ofd->offset() == kstd::units::bytes{write_buffer.size()}); + REQUIRE(bytes_written_2 == kstd::bytes{write_buffer.size() / 2}); + REQUIRE(ofd->offset() == kstd::bytes{write_buffer.size()}); } } } diff --git a/kernel/kernel/filesystem/rootfs/inode.cpp b/kernel/kernel/filesystem/rootfs/inode.cpp index 07607417..0ee0b517 100644 --- a/kernel/kernel/filesystem/rootfs/inode.cpp +++ b/kernel/kernel/filesystem/rootfs/inode.cpp @@ -10,14 +10,14 @@ namespace kernel::filesystem::rootfs { - auto inode::read(std::span<std::byte>, kstd::units::bytes) const -> kstd::result<kstd::units::bytes> + auto inode::read(std::span<std::byte>, kstd::bytes) const -> kstd::result<kstd::bytes> { - return kstd::units::bytes{}; + return kstd::bytes{}; } - auto inode::write(std::span<std::byte const>, kstd::units::bytes) -> kstd::result<kstd::units::bytes> + auto inode::write(std::span<std::byte const>, kstd::bytes) -> kstd::result<kstd::bytes> { - return kstd::units::bytes{}; + return kstd::bytes{}; } auto inode::is_directory() const -> bool diff --git a/kernel/kernel/filesystem/rootfs/inode.hpp b/kernel/kernel/filesystem/rootfs/inode.hpp index e9c6e738..82df2f1a 100644 --- a/kernel/kernel/filesystem/rootfs/inode.hpp +++ b/kernel/kernel/filesystem/rootfs/inode.hpp @@ -25,8 +25,8 @@ namespace kernel::filesystem::rootfs @param offset Read offset in bytes. @return Number of bytes read (always 0 because this inode does not expose file data). */ - [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> override; + [[nodiscard]] auto read(std::span<std::byte> buffer, kstd::bytes offset) const + -> kstd::result<kstd::bytes> override; /** @brief Writes to the rootfs directory inode. @@ -34,8 +34,7 @@ namespace kernel::filesystem::rootfs @param offset Write offset in bytes. @return Number of bytes written (always 0 because writes are not supported for this inode). */ - auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> override; + auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> override; /** @brief Check if this inode represents a directory. diff --git a/kernel/kernel/filesystem/vfs.tests.cpp b/kernel/kernel/filesystem/vfs.tests.cpp index 8693b9f5..a035e083 100644 --- a/kernel/kernel/filesystem/vfs.tests.cpp +++ b/kernel/kernel/filesystem/vfs.tests.cpp @@ -666,11 +666,11 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS auto marker = kstd::vector{std::byte{'M'}, std::byte{'K'}, std::byte{'N'}, std::byte{'O'}, std::byte{'D'}}; auto written = (*via_persistent_fs)->get_inode()->write(marker, 0_B); - REQUIRE(written == kstd::units::bytes{marker.size()}); + REQUIRE(written == kstd::bytes{marker.size()}); auto read_back = kstd::vector<std::byte>(marker.size()); auto read = (*via_devfs)->get_inode()->read(read_back, 0_B); - REQUIRE(read == kstd::units::bytes{marker.size()}); + REQUIRE(read == kstd::bytes{marker.size()}); REQUIRE(read_back == marker); } diff --git a/kernel/kernel/memory.cpp b/kernel/kernel/memory.cpp index 663137eb..b65a89db 100644 --- a/kernel/kernel/memory.cpp +++ b/kernel/kernel/memory.cpp @@ -21,7 +21,7 @@ namespace kernel::memory { null_allocator static instance; - [[nodiscard]] auto allocate(kstd::units::bytes, kstd::units::bytes) noexcept -> void * override + [[nodiscard]] auto allocate(kstd::bytes, kstd::bytes) noexcept -> void * override { kstd::print(kstd::print_sink::stderr, "Tried to allocate memory without an active heap!"); return nullptr; diff --git a/kernel/kernel/memory/block_list_allocator.cpp b/kernel/kernel/memory/block_list_allocator.cpp index a682051f..993dd470 100644 --- a/kernel/kernel/memory/block_list_allocator.cpp +++ b/kernel/kernel/memory/block_list_allocator.cpp @@ -20,7 +20,7 @@ namespace kernel::memory namespace { - [[nodiscard]] constexpr auto align_up(std::byte * pointer, kstd::units::bytes alignment) noexcept -> std::byte * + [[nodiscard]] constexpr auto align_up(std::byte * pointer, kstd::bytes alignment) noexcept -> std::byte * { auto const remainder = std::bit_cast<std::uintptr_t>(pointer) % static_cast<std::size_t>(alignment); return remainder == 0 ? pointer : pointer + static_cast<std::size_t>(alignment) - remainder; @@ -35,7 +35,7 @@ namespace kernel::memory , m_lock{} {} - auto block_list_allocator::allocate(kstd::units::bytes size, kstd::units::bytes alignment) noexcept -> void * + auto block_list_allocator::allocate(kstd::bytes size, kstd::bytes alignment) noexcept -> void * { kstd::lock_guard guard{m_lock}; @@ -49,13 +49,13 @@ namespace kernel::memory auto const raw_block = reinterpret_cast<std::byte *>(current); auto const unaligned_payload = raw_block + allocated_metadata_size; auto const aligned_payload = align_up(unaligned_payload, alignment); - auto const required_padding = static_cast<kstd::units::bytes>(aligned_payload - unaligned_payload); + auto const required_padding = static_cast<kstd::bytes>(aligned_payload - unaligned_payload); auto const total_required_size = required_padding + allocated_metadata_size + size; if (current->usable_size >= total_required_size) { auto const payload_header = aligned_payload - sizeof(block_header *) - sizeof(block_header); - auto const front_padding = static_cast<kstd::units::bytes>(payload_header - raw_block); + auto const front_padding = static_cast<kstd::bytes>(payload_header - raw_block); auto payload_block = current; @@ -75,7 +75,7 @@ namespace kernel::memory } auto const header_size = - static_cast<kstd::units::bytes>(aligned_payload - reinterpret_cast<std::byte *>(payload_block)); + static_cast<kstd::bytes>(aligned_payload - reinterpret_cast<std::byte *>(payload_block)); auto const payload_size = header_size - allocated_metadata_size + size; split(payload_block, payload_size, 0_B); @@ -117,7 +117,7 @@ namespace kernel::memory coalesce(block); } - auto block_list_allocator::expand(kstd::units::bytes size) noexcept -> bool + auto block_list_allocator::expand(kstd::bytes size) noexcept -> bool { auto const total_required_size = size + allocated_metadata_size; auto const frames_needed = (total_required_size + kapi::memory::frame::size - 1_B) / kapi::memory::frame::size; @@ -190,8 +190,7 @@ namespace kernel::memory } } - auto block_list_allocator::split(block_header * block, kstd::units::bytes size, kstd::units::bytes padding) noexcept - -> void + auto block_list_allocator::split(block_header * block, kstd::bytes size, kstd::bytes padding) noexcept -> void { auto const new_block_size = size + padding; diff --git a/kernel/kernel/memory/block_list_allocator.hpp b/kernel/kernel/memory/block_list_allocator.hpp index ac6257c0..55d9e361 100644 --- a/kernel/kernel/memory/block_list_allocator.hpp +++ b/kernel/kernel/memory/block_list_allocator.hpp @@ -33,7 +33,7 @@ namespace kernel::memory //! @param size The size of the block to allocate //! @param alignment The desired alignment of the allocated block //! @return A pointer to the beginning of the block on success, @p nullptr otherwise. - [[nodiscard]] auto allocate(kstd::units::bytes size, kstd::units::bytes alignment) noexcept -> void * override; + [[nodiscard]] auto allocate(kstd::bytes size, kstd::bytes alignment) noexcept -> void * override; //! Deallocate a block of memory previously allocated. //! @@ -43,7 +43,7 @@ namespace kernel::memory private: struct block_header final { - kstd::units::bytes usable_size{}; + kstd::bytes usable_size{}; bool free{}; block_header * next{}; block_header * prev{}; @@ -53,16 +53,16 @@ namespace kernel::memory //! //! Each allocated block carries a block header, like any unallocated one, but in addition also has a back-pointer //! to the block header to support padding due to alignment. - constexpr auto static allocated_metadata_size = kstd::units::bytes{sizeof(block_header) + sizeof(block_header *)}; + constexpr auto static allocated_metadata_size = kstd::bytes{sizeof(block_header) + sizeof(block_header *)}; //! The minimum number of bytes for an allocation. - constexpr auto static minimum_allocation_size = kstd::units::bytes{16uz}; + constexpr auto static minimum_allocation_size = kstd::bytes{16uz}; //! Try to expand the heap to accommodate the given size. //! //! @param delta The size to expand the heap by. //! @return @p true if the heap was expanded, @p false otherwise. - auto expand(kstd::units::bytes delta) noexcept -> bool; + auto expand(kstd::bytes delta) noexcept -> bool; //! Split a given free block to accommodate and allocation. //! @@ -71,7 +71,7 @@ namespace kernel::memory //! @param block The block to split. //! @param size The size of the allocation. //! @param padding The amount of padding to apply. - auto split(block_header * block, kstd::units::bytes size, kstd::units::bytes padding) noexcept -> void; + auto split(block_header * block, kstd::bytes size, kstd::bytes padding) noexcept -> void; //! Try to coalesce a given block with it's preceding and/or following block. //! diff --git a/kernel/kernel/memory/heap_allocator.hpp b/kernel/kernel/memory/heap_allocator.hpp index 59fa98b0..3a5a023b 100644 --- a/kernel/kernel/memory/heap_allocator.hpp +++ b/kernel/kernel/memory/heap_allocator.hpp @@ -16,7 +16,7 @@ namespace kernel::memory //! @param size The size of the block to allocate //! @param alignment The desired alignment of the allocated block //! @return A pointer to the beginning of the block on success, @p nullptr otherwise. - [[nodiscard]] virtual auto allocate(kstd::units::bytes size, kstd::units::bytes alignment) noexcept -> void * = 0; + [[nodiscard]] virtual auto allocate(kstd::bytes size, kstd::bytes alignment) noexcept -> void * = 0; //! Deallocate a block of memory previously allocated. //! diff --git a/kernel/kernel/memory/operators.cpp b/kernel/kernel/memory/operators.cpp index 5de5101d..45ba5152 100644 --- a/kernel/kernel/memory/operators.cpp +++ b/kernel/kernel/memory/operators.cpp @@ -10,8 +10,8 @@ [[nodiscard]] auto operator new(std::size_t size, std::align_val_t alignment, std::nothrow_t const &) noexcept -> void * { auto & allocator = kernel::memory::get_heap_allocator(); - return allocator.allocate(static_cast<kstd::units::bytes>(size), - static_cast<kstd::units::bytes>(static_cast<std::size_t>(alignment))); + return allocator.allocate(static_cast<kstd::bytes>(size), + static_cast<kstd::bytes>(static_cast<std::size_t>(alignment))); } [[nodiscard]] auto operator new(std::size_t size, std::align_val_t alignment) -> void * diff --git a/kernel/kernel/test_support/devices/block_device.cpp b/kernel/kernel/test_support/devices/block_device.cpp index 8ac1e23c..c9ab4a5e 100644 --- a/kernel/kernel/test_support/devices/block_device.cpp +++ b/kernel/kernel/test_support/devices/block_device.cpp @@ -18,14 +18,14 @@ using namespace kstd::units_literals; namespace kernel::tests::devices { - block_device::block_device(kstd::string const & name, kstd::units::bytes block_size, kstd::units::bytes initial_size) + block_device::block_device(kstd::string const & name, kstd::bytes block_size, kstd::bytes initial_size) : kapi::devices::device{name} , m_block_size{block_size} { data.resize(initial_size.value, 0); } - auto block_device::read_block(size_t block_index, std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes> + auto block_device::read_block(size_t block_index, std::span<std::byte> buffer) -> kstd::result<kstd::bytes> { auto const offset = block_index * block_size(); if (offset.value >= data.size()) @@ -34,7 +34,7 @@ namespace kernel::tests::devices return 0_B; } - auto const bytes_to_read = std::min(block_size(), kstd::units::bytes{data.size()} - offset); + auto const bytes_to_read = std::min(block_size(), kstd::bytes{data.size()} - offset); kstd::libc::memcpy(buffer.data(), data.data() + offset, bytes_to_read.value); if (bytes_to_read < block_size()) { @@ -44,8 +44,7 @@ namespace kernel::tests::devices return bytes_to_read; } - auto block_device::write_block(size_t block_index, std::span<std::byte const> buffer) - -> kstd::result<kstd::units::bytes> + auto block_device::write_block(size_t block_index, std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> { auto const offset = block_index * block_size(); auto const write_end = offset + block_size(); @@ -58,14 +57,14 @@ namespace kernel::tests::devices return block_size(); } - auto block_device::block_size() const -> kstd::units::bytes + auto block_device::block_size() const -> kstd::bytes { return m_block_size; } - auto block_device::capacity() const -> kstd::units::bytes + auto block_device::capacity() const -> kstd::bytes { - return kstd::units::bytes{data.size()}; + return kstd::bytes{data.size()}; } auto block_device::query_facet(kapi::capabilities::facet_id facet) -> void * diff --git a/kernel/kernel/test_support/devices/block_device.hpp b/kernel/kernel/test_support/devices/block_device.hpp index 11065109..5f00f27e 100644 --- a/kernel/kernel/test_support/devices/block_device.hpp +++ b/kernel/kernel/test_support/devices/block_device.hpp @@ -18,21 +18,20 @@ namespace kernel::tests::devices struct block_device final : kapi::devices::device, kapi::filesystem::block_special_file { - block_device(kstd::string const & name, kstd::units::bytes block_size, kstd::units::bytes initial_size = {}); + block_device(kstd::string const & name, kstd::bytes block_size, kstd::bytes initial_size = {}); - auto read_block(size_t block_index, std::span<std::byte> buffer) -> kstd::result<kstd::units::bytes> override; - auto write_block(size_t block_index, std::span<std::byte const> buffer) - -> kstd::result<kstd::units::bytes> override; + auto read_block(size_t block_index, std::span<std::byte> buffer) -> kstd::result<kstd::bytes> override; + auto write_block(size_t block_index, std::span<std::byte const> buffer) -> kstd::result<kstd::bytes> override; - [[nodiscard]] auto block_size() const -> kstd::units::bytes override; - [[nodiscard]] auto capacity() const -> kstd::units::bytes override; + [[nodiscard]] auto block_size() const -> kstd::bytes override; + [[nodiscard]] auto capacity() const -> kstd::bytes override; kstd::vector<uint8_t> data{}; private: [[nodiscard]] auto query_facet(kapi::capabilities::facet_id facet) -> void * override; - kstd::units::bytes m_block_size{}; + kstd::bytes m_block_size{}; }; } // namespace kernel::tests::devices diff --git a/kernel/kernel/test_support/filesystem/ext2.cpp b/kernel/kernel/test_support/filesystem/ext2.cpp index 6ea41bab..96d94ea1 100644 --- a/kernel/kernel/test_support/filesystem/ext2.cpp +++ b/kernel/kernel/test_support/filesystem/ext2.cpp @@ -20,11 +20,11 @@ namespace kernel::tests::filesystem::ext2 constexpr uint32_t root_directory_data_block = 20; } // namespace - auto write_bytes(kernel::tests::devices::block_device & device, kstd::units::bytes offset, void const * source, - kstd::units::bytes size) -> void + auto write_bytes(kernel::tests::devices::block_device & device, kstd::bytes offset, void const * source, + kstd::bytes size) -> void { auto const required_size = offset + size; - if (kstd::units::bytes{device.data.size()} < required_size) + if (kstd::bytes{device.data.size()} < required_size) { device.data.resize(required_size.value, 0); } @@ -32,7 +32,7 @@ namespace kernel::tests::filesystem::ext2 std::memcpy(device.data.data() + offset, source, size.value); } - auto write_u32(kernel::tests::devices::block_device & device, kstd::units::bytes offset, uint32_t value) -> void + auto write_u32(kernel::tests::devices::block_device & device, kstd::bytes offset, uint32_t value) -> void { write_bytes(device, offset, &value, kstd::size_of(value)); } @@ -73,7 +73,7 @@ namespace kernel::tests::filesystem::ext2 auto const root_inode_offset = static_cast<size_t>(group_descriptor.inode_table) * kernel::filesystem::ext2::constants::base_block_size + - (kernel::filesystem::ext2::constants::root_inode_number - 1) * kstd::units::bytes{superblock.inode_size}; + (kernel::filesystem::ext2::constants::root_inode_number - 1) * kstd::bytes{superblock.inode_size}; write_bytes(device, root_inode_offset, &root_inode_data, kstd::size_of(root_inode_data)); } } // namespace kernel::tests::filesystem::ext2
\ No newline at end of file diff --git a/kernel/kernel/test_support/filesystem/ext2.hpp b/kernel/kernel/test_support/filesystem/ext2.hpp index a8f73ab5..a83bdd94 100644 --- a/kernel/kernel/test_support/filesystem/ext2.hpp +++ b/kernel/kernel/test_support/filesystem/ext2.hpp @@ -11,9 +11,9 @@ namespace kernel::tests::filesystem::ext2 { - auto write_bytes(kernel::tests::devices::block_device & device, kstd::units::bytes offset, void const * source, - kstd::units::bytes size) -> void; - auto write_u32(kernel::tests::devices::block_device & device, kstd::units::bytes offset, uint32_t value) -> void; + auto write_bytes(kernel::tests::devices::block_device & device, kstd::bytes offset, void const * source, + kstd::bytes size) -> void; + auto write_u32(kernel::tests::devices::block_device & device, kstd::bytes offset, uint32_t value) -> void; auto setup_mock_ext2_layout(kernel::tests::devices::block_device & device) -> void; auto setup_mock_ext2_layout(kernel::tests::devices::block_device & device, kernel::filesystem::ext2::superblock const & superblock) -> void; diff --git a/kernel/kernel/test_support/filesystem/inode.cpp b/kernel/kernel/test_support/filesystem/inode.cpp index 96a30c33..409efe77 100644 --- a/kernel/kernel/test_support/filesystem/inode.cpp +++ b/kernel/kernel/test_support/filesystem/inode.cpp @@ -10,14 +10,14 @@ namespace kernel::tests::filesystem { - auto inode::read(std::span<std::byte> buffer, kstd::units::bytes) const -> kstd::result<kstd::units::bytes> + auto inode::read(std::span<std::byte> buffer, kstd::bytes) const -> kstd::result<kstd::bytes> { - return kstd::units::bytes{buffer.size()}; + return kstd::bytes{buffer.size()}; } - auto inode::write(std::span<std::byte const> buffer, kstd::units::bytes) -> kstd::result<kstd::units::bytes> + auto inode::write(std::span<std::byte const> buffer, kstd::bytes) -> kstd::result<kstd::bytes> { - return kstd::units::bytes{buffer.size()}; + return kstd::bytes{buffer.size()}; } auto inode::is_regular() const -> bool diff --git a/kernel/kernel/test_support/filesystem/inode.hpp b/kernel/kernel/test_support/filesystem/inode.hpp index 383ca6f5..51773f15 100644 --- a/kernel/kernel/test_support/filesystem/inode.hpp +++ b/kernel/kernel/test_support/filesystem/inode.hpp @@ -13,10 +13,8 @@ namespace kernel::tests::filesystem { struct inode : kernel::filesystem::inode { - auto read(std::span<std::byte> buffer, kstd::units::bytes offset) const - -> kstd::result<kstd::units::bytes> override; - auto write(std::span<std::byte const> buffer, kstd::units::bytes offset) - -> kstd::result<kstd::units::bytes> override; + auto read(std::span<std::byte> buffer, kstd::bytes offset) const -> kstd::result<kstd::bytes> override; + auto write(std::span<std::byte const> buffer, kstd::bytes offset) -> kstd::result<kstd::bytes> override; [[nodiscard]] auto is_regular() const -> bool override; }; diff --git a/kernel/kernel/test_support/kapi/memory.cpp b/kernel/kernel/test_support/kapi/memory.cpp index 01fc078a..e554145d 100644 --- a/kernel/kernel/test_support/kapi/memory.cpp +++ b/kernel/kernel/test_support/kapi/memory.cpp @@ -12,8 +12,8 @@ namespace { //! The size of the simulated RAM. - constexpr auto physical_size = kstd::units::MiB(32u); - constexpr auto virtual_size = kstd::units::GiB(1u); + constexpr auto physical_size = kstd::MiB(32u); + constexpr auto virtual_size = kstd::GiB(1u); constexpr auto number_of_frames = physical_size / kapi::memory::frame::size; diff --git a/kernel/kernel/test_support/page_mapper.cpp b/kernel/kernel/test_support/page_mapper.cpp index b1a6f92b..3a0072b4 100644 --- a/kernel/kernel/test_support/page_mapper.cpp +++ b/kernel/kernel/test_support/page_mapper.cpp @@ -11,7 +11,7 @@ namespace kernel::tests { - page_mapper::page_mapper(kstd::units::bytes physical_size, kstd::units::bytes virtual_size) + page_mapper::page_mapper(kstd::bytes physical_size, kstd::bytes virtual_size) : memory{physical_size, virtual_size} {} diff --git a/kernel/kernel/test_support/page_mapper.hpp b/kernel/kernel/test_support/page_mapper.hpp index a9985393..ee02217c 100644 --- a/kernel/kernel/test_support/page_mapper.hpp +++ b/kernel/kernel/test_support/page_mapper.hpp @@ -20,7 +20,7 @@ namespace kernel::tests //! //! @param physical_size The size of the physical memory. //! @param virtual_size The size of the virtual address space. - page_mapper(kstd::units::bytes physical_size, kstd::units::bytes virtual_size); + page_mapper(kstd::bytes physical_size, kstd::bytes virtual_size); //! @copydoc kapi::memory::page_mapper::map //! diff --git a/kernel/kernel/test_support/simulated_memory.cpp b/kernel/kernel/test_support/simulated_memory.cpp index 07adab17..7614816b 100644 --- a/kernel/kernel/test_support/simulated_memory.cpp +++ b/kernel/kernel/test_support/simulated_memory.cpp @@ -17,7 +17,7 @@ namespace kernel::tests { - simulated_memory::simulated_memory(kstd::units::bytes physical_size, kstd::units::bytes virtual_size) + simulated_memory::simulated_memory(kstd::bytes physical_size, kstd::bytes virtual_size) : m_descriptor{memfd_create("teachos_simulated_memory", 0)} , m_physical_size{physical_size} , m_virtual_size{virtual_size} @@ -76,7 +76,7 @@ namespace kernel::tests return m_physical_base; } - auto simulated_memory::physical_size() const noexcept -> kstd::units::bytes + auto simulated_memory::physical_size() const noexcept -> kstd::bytes { return m_physical_size; } @@ -86,12 +86,12 @@ namespace kernel::tests return kapi::memory::linear_address{m_virtual_base}; } - auto simulated_memory::virtual_size() const noexcept -> kstd::units::bytes + auto simulated_memory::virtual_size() const noexcept -> kstd::bytes { return m_virtual_size; } - auto simulated_memory::map(kstd::units::bytes size, std::byte * to, off_t offset) -> std::byte * + auto simulated_memory::map(kstd::bytes size, std::byte * to, off_t offset) -> std::byte * { auto mapped_ptr = mmap(to, size.value, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, m_descriptor, offset); if (mapped_ptr == MAP_FAILED) diff --git a/kernel/kernel/test_support/simulated_memory.hpp b/kernel/kernel/test_support/simulated_memory.hpp index e7ca9f6c..e1046ef4 100644 --- a/kernel/kernel/test_support/simulated_memory.hpp +++ b/kernel/kernel/test_support/simulated_memory.hpp @@ -23,7 +23,7 @@ namespace kernel::tests //! Construct a new simulated memory device. //! @param physical_size The size of the physical memory. //! @param virtual_size The size of the virtual address space. - simulated_memory(kstd::units::bytes physical_size, kstd::units::bytes virtual_size); + simulated_memory(kstd::bytes physical_size, kstd::bytes virtual_size); //! Destroy this device ~simulated_memory(); @@ -38,13 +38,13 @@ namespace kernel::tests [[nodiscard]] auto physical_base() const noexcept -> std::byte const *; //! Get the size of the physical memory of this device. - [[nodiscard]] auto physical_size() const noexcept -> kstd::units::bytes; + [[nodiscard]] auto physical_size() const noexcept -> kstd::bytes; //! Get the base address of the virtual address space of this device. [[nodiscard]] auto virtual_base() const noexcept -> kapi::memory::linear_address; //! Get the size of the virtual address space of this device. - [[nodiscard]] auto virtual_size() const noexcept -> kstd::units::bytes; + [[nodiscard]] auto virtual_size() const noexcept -> kstd::bytes; //! Map a region of physical memory to a region of virtual memory. //! @@ -52,12 +52,12 @@ namespace kernel::tests //! @param to The base address of the virtual region. //! @param offset The offset into the physical memory to map. //! @return A pointer to the first byte of the mapped region. - [[nodiscard]] auto map(kstd::units::bytes size, std::byte * to, off_t offset) -> std::byte *; + [[nodiscard]] auto map(kstd::bytes size, std::byte * to, off_t offset) -> std::byte *; private: int m_descriptor{}; - kstd::units::bytes m_physical_size{0}; - kstd::units::bytes m_virtual_size{0}; + kstd::bytes m_physical_size{0}; + kstd::bytes m_virtual_size{0}; std::byte * m_physical_base{nullptr}; std::byte * m_virtual_base{nullptr}; }; |
