From 79ef6855eb38edd03b51d2f5a2f614cdd7b9fcf1 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 3 Sep 2026 13:38:00 +0200 Subject: chore: add missing [[nodiscard]] attributes --- kernel/kernel/devices/block_device_utils.hpp | 8 ++++---- kernel/kernel/filesystems/devfs/inode.hpp | 3 ++- kernel/kernel/filesystems/ext2/inode.hpp | 3 ++- kernel/kernel/filesystems/rootfs/inode.hpp | 3 ++- kernel/kernel/vfs/inode.hpp | 3 ++- kernel/kernel/vfs/mount.hpp | 5 +++-- kernel/kernel/vfs/open_file_descriptor.hpp | 10 ++++++---- kernel/kernel/vfs/open_file_table.hpp | 4 ++-- 8 files changed, 23 insertions(+), 16 deletions(-) (limited to 'kernel') diff --git a/kernel/kernel/devices/block_device_utils.hpp b/kernel/kernel/devices/block_device_utils.hpp index 1fb7cd9d..d6a6724c 100644 --- a/kernel/kernel/devices/block_device_utils.hpp +++ b/kernel/kernel/devices/block_device_utils.hpp @@ -30,8 +30,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 buffer, kstd::bytes offset) - -> kstd::result; + [[nodiscard]] auto read(kapi::filesystem::block_special_file & device, std::span buffer, + kstd::bytes offset) -> kstd::result; //! @brief Write data from a buffer to a given block device. //! @@ -39,8 +39,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 buffer, kstd::bytes offset) - -> kstd::result; + [[nodiscard]] auto write(kapi::filesystem::block_special_file & device, std::span buffer, + kstd::bytes offset) -> kstd::result; } // namespace kernel::devices::block_device_utils #endif \ No newline at end of file diff --git a/kernel/kernel/filesystems/devfs/inode.hpp b/kernel/kernel/filesystems/devfs/inode.hpp index c19671df..9a01d777 100644 --- a/kernel/kernel/filesystems/devfs/inode.hpp +++ b/kernel/kernel/filesystems/devfs/inode.hpp @@ -22,7 +22,8 @@ namespace kernel::filesystems::devfs [[nodiscard]] auto read(std::span buffer, kstd::bytes offset) const -> kstd::result override; - auto write(std::span buffer, kstd::bytes offset) -> kstd::result override; + [[nodiscard]] auto write(std::span buffer, kstd::bytes offset) + -> kstd::result override; [[nodiscard]] auto is_directory() const -> bool override; diff --git a/kernel/kernel/filesystems/ext2/inode.hpp b/kernel/kernel/filesystems/ext2/inode.hpp index 9a3561f7..206d2a48 100644 --- a/kernel/kernel/filesystems/ext2/inode.hpp +++ b/kernel/kernel/filesystems/ext2/inode.hpp @@ -64,7 +64,8 @@ namespace kernel::filesystems::ext2 [[nodiscard]] auto read(std::span buffer, kstd::bytes offset) const -> kstd::result override; - auto write(std::span buffer, kstd::bytes offset) -> kstd::result override; + [[nodiscard]] auto write(std::span buffer, kstd::bytes offset) + -> kstd::result override; //! @} diff --git a/kernel/kernel/filesystems/rootfs/inode.hpp b/kernel/kernel/filesystems/rootfs/inode.hpp index 10e6a4e1..2bd5863f 100644 --- a/kernel/kernel/filesystems/rootfs/inode.hpp +++ b/kernel/kernel/filesystems/rootfs/inode.hpp @@ -23,7 +23,8 @@ namespace kernel::filesystems::rootfs [[nodiscard]] auto read(std::span buffer, kstd::bytes offset) const -> kstd::result override; - auto write(std::span buffer, kstd::bytes offset) -> kstd::result override; + [[nodiscard]] auto write(std::span buffer, kstd::bytes offset) + -> kstd::result override; [[nodiscard]] auto is_directory() const -> bool override; diff --git a/kernel/kernel/vfs/inode.hpp b/kernel/kernel/vfs/inode.hpp index 63e73315..37fed901 100644 --- a/kernel/kernel/vfs/inode.hpp +++ b/kernel/kernel/vfs/inode.hpp @@ -55,7 +55,8 @@ namespace kernel::vfs //! @param buffer Source buffer. //! @param offset Write offset in bytes. //! @return The number of bytes written on success, an error otherwise. - virtual auto write(std::span buffer, kstd::bytes offset) -> kstd::result = 0; + [[nodiscard]] virtual auto write(std::span buffer, kstd::bytes offset) + -> kstd::result = 0; //! @} diff --git a/kernel/kernel/vfs/mount.hpp b/kernel/kernel/vfs/mount.hpp index dc49212c..4b303297 100644 --- a/kernel/kernel/vfs/mount.hpp +++ b/kernel/kernel/vfs/mount.hpp @@ -43,8 +43,9 @@ namespace kernel::vfs //! @param parent_mount The parent mount which contains the mount_dentry. //! @param source_mount The mount that the filesystem originates from. //! @param backing_inode The backing inode for the filesystem, if any. - auto static create(dentry_ptr const & mount_dentry, filesystem_ptr const & fs, mount_ptr const & parent_mount, - mount_ptr const & source_mount, inode_ptr const & backing_inode) -> kstd::result; + [[nodiscard]] auto static create(dentry_ptr const & mount_dentry, filesystem_ptr const & fs, + mount_ptr const & parent_mount, mount_ptr const & source_mount, + inode_ptr const & backing_inode) -> kstd::result; //! Get the directory entry where the filesystem is mounted. [[nodiscard]] auto mount_dentry() const -> dentry_ptr const &; diff --git a/kernel/kernel/vfs/open_file_descriptor.hpp b/kernel/kernel/vfs/open_file_descriptor.hpp index 587105b8..5cac23e8 100644 --- a/kernel/kernel/vfs/open_file_descriptor.hpp +++ b/kernel/kernel/vfs/open_file_descriptor.hpp @@ -32,26 +32,28 @@ namespace kernel::vfs //! //! @param buffer The buffer to read data into. //! @return The number of bytes read on success, an error otherwise. - virtual auto read(std::span buffer) -> kstd::result; + [[nodiscard]] virtual auto read(std::span buffer) -> kstd::result; //! Write data to the open file descriptor from a buffer. //! //! @param buffer The buffer to write data from. //! @return The number of bytes written on success, an error otherwise. - virtual auto write(std::span buffer) -> kstd::result; + [[nodiscard]] virtual auto write(std::span buffer) -> kstd::result; //! Move the read/write offset of the file. //! //! @param offset The offset to apply relative to the given origin. //! @param origin The origin of the offset. //! @return the new offset on success, an error otherwise. - virtual auto seek(kstd::offset offset, kapi::filesystem::seek_origin origin) -> kstd::result; + [[nodiscard]] virtual auto seek(kstd::offset offset, kapi::filesystem::seek_origin origin) + -> kstd::result; //! Read directory entries from the file. //! //! @param entries A buffer to read the entries into. //! @return The number of read entries on success, an error otherwise. - virtual auto read_directory(std::span entries) -> kstd::result; + [[nodiscard]] virtual auto read_directory(std::span entries) + -> kstd::result; //! Get a reference to the directory entry associated with this open file descriptor. //! diff --git a/kernel/kernel/vfs/open_file_table.hpp b/kernel/kernel/vfs/open_file_table.hpp index 8d6a2341..e7e57f6b 100644 --- a/kernel/kernel/vfs/open_file_table.hpp +++ b/kernel/kernel/vfs/open_file_table.hpp @@ -33,7 +33,7 @@ namespace kernel::vfs //! //! @param fd The file descriptor to add. //! @return The file descriptor index assigned to the file on success, an error otherwise. - auto add_file(kstd::shared_ptr const & fd) -> kstd::result; + [[nodiscard]] auto add_file(kstd::shared_ptr const & fd) -> kstd::result; //! Get a file from the open file table. //! @@ -45,7 +45,7 @@ namespace kernel::vfs //! //! @param fd The file descriptor index to remove. //! @return Nothin on success, an error otherwise. - auto remove_file(std::size_t fd) -> kstd::result; + [[nodiscard]] auto remove_file(std::size_t fd) -> kstd::result; private: open_file_table() = default; -- cgit v1.2.3 From df6db4a91c6c0950f1d5985dd5bb9a035609cac4 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 3 Sep 2026 14:04:18 +0200 Subject: chore: fix message prefixes --- kernel/kapi/tracked_mutex.cpp | 4 +-- kernel/kernel/main.cpp | 84 +++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 45 deletions(-) (limited to 'kernel') diff --git a/kernel/kapi/tracked_mutex.cpp b/kernel/kapi/tracked_mutex.cpp index b1796adc..1694d814 100644 --- a/kernel/kapi/tracked_mutex.cpp +++ b/kernel/kapi/tracked_mutex.cpp @@ -17,7 +17,7 @@ namespace kapi { if (expected == self) { - system::panic("[OS] CPU {} tried to reacquire a mutex it already holds!", self); + system::panic("[OS:LCK] CPU {} tried to reacquire a mutex it already holds!", self); } expected = kapi::cpu::invalid_id; } @@ -43,7 +43,7 @@ namespace kapi if (!m_owner.compare_exchange_strong(expected, kapi::cpu::invalid_id, std::memory_order::release)) { - system::panic("[OS] CPU {} released a mutex it did not hold!", self); + system::panic("[OS:LCK] CPU {} released a mutex it did not hold!", self); } } diff --git a/kernel/kernel/main.cpp b/kernel/kernel/main.cpp index ac2e18b8..bc192950 100644 --- a/kernel/kernel/main.cpp +++ b/kernel/kernel/main.cpp @@ -28,84 +28,82 @@ using namespace kstd::units_literals; auto run_demo() -> void { // 1) open a file - kstd::println("attempting to open /entrance/tickets.txt"); + kstd::println("trying to open /entrance/tickets.txt"); auto fd_1 = kapi::filesystem::open("/entrance/tickets.txt"); if (!fd_1) { - kapi::system::panic("[demo failed]"); + kapi::system::panic("[OS:DEM] failed to open '/entrance/tickets.txt'", fd_1.error()); } else { - kstd::println("--> successfully opened /entrance/tickets.txt with file descriptor {}", fd_1.value()); + kstd::println("[OS:DEM] opened /entrance/tickets.txt with file descriptor {}", fd_1.value()); } // 2) read from the file kstd::vector buffer_1{10}; auto bytes_read = *kapi::filesystem::read(fd_1.value(), buffer_1); auto buffer_as_str = std::string_view{reinterpret_cast(buffer_1.data()), bytes_read}; - kstd::println("--> read {} from /entrance/tickets.txt: {}", bytes_read, buffer_as_str); - kstd::println(""); + kstd::println("[OS:DEM] read {} from /entrance/tickets.txt: {}", bytes_read, buffer_as_str); // 3) show that /entrance/information/info_1.txt is not accessible before mounting - kstd::println("attempting to open /entrance/information/info_1.txt before mounting"); + kstd::println("[OS:DEM] trying to open /entrance/information/info_1.txt before mounting"); auto fd_before_mount = kapi::filesystem::open("/entrance/information/info_1.txt"); if (!fd_before_mount && fd_before_mount.error() == kstd::errc::no_such_file_or_directory) { - kstd::println("--> as expected the file could not be opened before mounting"); + kstd::println("[OS:DEM] file could not be opened before mounting"); } // 4) mount a new filesystem on top of /entrance - kstd::println("mount /dev/ram1 to /entrance"); - if (kapi::filesystem::mount("/dev/ram1", "/entrance")) + kstd::println("[OS:DEM] mount /dev/ram1 to /entrance"); + if (auto result = kapi::filesystem::mount("/dev/ram1", "/entrance")) { - kstd::println("--> successfully mounted /dev/ram1 to /entrance"); + kstd::println("[OS:DEM] mounted /dev/ram1 to /entrance"); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to mount /dev/ram1 on /entrance", result.error()); } - kstd::println(""); // 5) open a file from the new filesystem - kstd::println("attempting to open /entrance/information/info_1.txt"); + kstd::println("[OS:DEM] trying to open /entrance/information/info_1.txt"); auto fd_2 = kapi::filesystem::open("/entrance/information/info_1.txt"); if (fd_2) { - kstd::println("--> successfully opened /entrance/information/info_1.txt with file descriptor {}", fd_2.value()); + kstd::println("[OS:DEM] opened /entrance/information/info_1.txt with file descriptor {}", fd_2.value()); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to open /entrance/information/info_1.txt", fd_2.error()); } // 6) read from the new file kstd::vector buffer_2{10}; bytes_read = *kapi::filesystem::read(fd_2.value(), buffer_2); buffer_as_str = std::string_view{reinterpret_cast(buffer_2.data()), static_cast(bytes_read)}; - kstd::println("--> read {} from /entrance/information/info_1.txt: {}", bytes_read, buffer_as_str); + kstd::println("[OS:DEM] read {} from /entrance/information/info_1.txt: {}", bytes_read, buffer_as_str); // 7) open device as file - kstd::println("attempting to open /dev/ram2 as a file"); + kstd::println("[OS:DEM] trying to open /dev/ram2 as a file"); auto fd_3 = kapi::filesystem::open("/dev/ram2"); if (fd_3) { - kstd::println("--> successfully opened /dev/ram2 as a file with file descriptor {}", fd_3.value()); + kstd::println("[OS:DEM] opened /dev/ram2 as a file with file descriptor {}", fd_3.value()); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to open /dev/ram2 as a file", fd_3.error()); } // 8) read from the device file kstd::vector buffer_3{2}; bytes_read = *kapi::filesystem::read(fd_3.value(), buffer_3); - kstd::println("--> read {} from /dev/ram2: {::#04x}", bytes_read, buffer_3); + kstd::println("[OS:DEM] read {} from /dev/ram2: {::#04x}", bytes_read, buffer_3); // 9) write to the device file auto const default_buffer_value = std::byte{0xAA}; kstd::vector write_buffer{default_buffer_value, default_buffer_value}; auto bytes_written = *kapi::filesystem::write(fd_3.value(), write_buffer); - kstd::println("--> wrote {} to /dev/ram2: {::#04x}", bytes_written, write_buffer); + kstd::println("[OS:DEM] wrote {} to /dev/ram2: {::#04x}", bytes_written, write_buffer); // 10) do memory dump to show that the write to the device file had an effect @@ -119,25 +117,25 @@ auto run_demo() -> void if (!creation_result) { - kapi::system::panic("demo failed", creation_result.error()); + kapi::system::panic("[OS:DEM] failed to create /test_files/test_file.txt", creation_result.error()); } // 13) write to the new file auto fd_4 = kapi::filesystem::open("/test_files/test_file.txt"); if (fd_4) { - kstd::println("--> successfully opened /test_files/test_file.txt as a file with file descriptor {}", fd_4.value()); + kstd::println("[OS:DEM] opened /test_files/test_file.txt as a file with file descriptor {}", fd_4.value()); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to open /test_files/test_file.txt", fd_4.error()); } kstd::vector test_write_buffer{ std::byte{'H'}, std::byte{'e'}, std::byte{'l'}, std::byte{'l'}, std::byte{'o'}, std::byte{' '}, std::byte{'T'}, std::byte{'e'}, std::byte{'a'}, std::byte{'c'}, std::byte{'h'}, std::byte{'O'}, std::byte{'S'}}; bytes_written = *kapi::filesystem::write(*fd_4, test_write_buffer); - kstd::println("--> wrote {} to /test_files/test_file.txt: {::#04x}", bytes_written, test_write_buffer); + kstd::println("[OS:DEM] wrote {} to /test_files/test_file.txt: {::#04x}", bytes_written, test_write_buffer); // 14) dmp the module after create new directory and file // -exec monitor memsave 0xffffffff8025b000 0xA00000 dump_after.bin @@ -146,75 +144,75 @@ auto run_demo() -> void auto fd_5 = kapi::filesystem::open("/dev/null"); if (fd_5) { - kstd::println("--> successfully opened /dev/null as a file with file descriptor {}", fd_5.value()); + kstd::println("[OS:DEM] opened /dev/null as a file with file descriptor {}", fd_5.value()); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to open /dev/null", fd_5.error()); } auto buffer_4 = kstd::vector{10, std::byte{0xff}}; if (auto read = kapi::filesystem::read(fd_5.value(), buffer_4); !read) { - kapi::system::panic("demo failed: {}", read.error()); + kapi::system::panic("[OS:DEM] failed to read from /dev/null", read.error()); } else { bytes_read = *read; } - kstd::println("--> read {} from /dev/null", bytes_read); + kstd::println("[OS:DEM] read {} from /dev/null", bytes_read); if (auto written = kapi::filesystem::write(fd_5.value(), buffer_4); !written) { - kapi::system::panic("demo failed: {}", written.error()); + kapi::system::panic("[OS:DEM] failed to write to /dev/null", written.error()); } else { bytes_written = *written; } - kstd::println("--> wrote {} to /dev/null", bytes_written); + kstd::println("[OS:DEM] wrote {} to /dev/null", bytes_written); // 16) read from /dev/null auto fd_6 = kapi::filesystem::open("/dev/zero"); if (fd_6) { - kstd::println("--> successfully opened /dev/zero as a file with file descriptor {}", fd_6.value()); + kstd::println("[OS:DEM] opened /dev/zero as a file with file descriptor {}", fd_6.value()); } else { - kapi::system::panic("demo failed"); + kapi::system::panic("[OS:DEM] failed to open /dev/zero", fd_6.error()); } auto buffer_5 = kstd::vector{10, std::byte{0xff}}; if (auto read = kapi::filesystem::read(fd_6.value(), buffer_5); !read) { - kapi::system::panic("demo failed: {}", read.error()); + kapi::system::panic("[OS:DEM] failed to read from /dev/zero", read.error()); } else { bytes_read = *read; } - kstd::println("--> read {} from /dev/zero: {::#04x}", bytes_read, buffer_5); + kstd::println("[OS:DEM] read {} from /dev/zero: {::#04x}", bytes_read, buffer_5); if (auto written = kapi::filesystem::write(fd_6.value(), buffer_5); !written) { - kapi::system::panic("demo failed: {}", written.error()); + kapi::system::panic("[OS:DEM] failed to write to /dev/zero", written.error()); } else { bytes_written = *written; } - kstd::println("--> wrote {} to /dev/zero", bytes_written); + kstd::println("[OS:DEM] wrote {} to /dev/zero", bytes_written); auto ls = [](std::string_view path) { auto fd = kapi::filesystem::open(path); if (fd) { - kstd::println("--> ls '{}'", path); + kstd::println("[OS:DEM] ls '{}'", path); } else { - kstd::println(kstd::print_sink::stderr, "!!> ls '{}': {}", path, fd.error()); + kstd::println(kstd::print_sink::stderr, "[OS:DEM] ls '{}': {}", path, fd.error()); return; } @@ -232,7 +230,7 @@ auto run_demo() -> void } else { - kstd::println(kstd::print_sink::stderr, "!!> ls '{}': {}", path, stat.error()); + kstd::println(kstd::print_sink::stderr, "[OS:DEM] ls '{}': {}", path, stat.error()); } } } @@ -246,12 +244,12 @@ auto run_demo() -> void } else { - kstd::println(kstd::print_sink::stderr, "!!> ls '{}': {}", path, stat.error()); + kstd::println(kstd::print_sink::stderr, "[OS:DEM] ls '{}': {}", path, stat.error()); } } else { - kstd::println(kstd::print_sink::stderr, "!!> ls '{}': {}", path, read.error()); + kstd::println(kstd::print_sink::stderr, "[OS:DEM] ls '{}': {}", path, read.error()); return; } }; @@ -316,5 +314,5 @@ auto main() -> int // TODO BA-FS26 remove demo code? run_demo(); - kapi::system::panic("Returning from kernel main!"); + kapi::system::panic("[OS] Returning from kernel main!"); } -- cgit v1.2.3 From 28114ae949130d39380a80800c60b5b334d61b19 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 3 Sep 2026 14:14:17 +0200 Subject: chore: fix header guards --- kernel/kernel/vfs/path.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel') diff --git a/kernel/kernel/vfs/path.hpp b/kernel/kernel/vfs/path.hpp index e3dbe8d5..38cf2967 100644 --- a/kernel/kernel/vfs/path.hpp +++ b/kernel/kernel/vfs/path.hpp @@ -94,4 +94,4 @@ namespace kernel::vfs::path } // namespace kernel::vfs::path -#endif // TEACHOS_KERNEL_FILESYSTEM_PATH_HPP \ No newline at end of file +#endif \ No newline at end of file -- cgit v1.2.3