From c6a97ea84348a51fedd18d3a77de701a21d23e66 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 3 Dec 2021 10:23:09 +0000 Subject: [PATCH] Kernel: Mark kernel smart-pointer classes as [[nodiscard]] And cast the unused return values to void. --- Kernel/Bus/USB/UHCI/UHCIController.cpp | 2 +- Kernel/FileSystem/Plan9FileSystem.cpp | 2 +- Kernel/FileSystem/VirtualFileSystem.cpp | 4 ++-- Kernel/Library/ThreadSafeNonnullRefPtr.h | 4 +++- Kernel/Library/ThreadSafeRefPtr.h | 2 +- Kernel/Library/ThreadSafeWeakPtr.h | 2 +- Kernel/Net/NetworkTask.cpp | 2 +- Kernel/Tasks/SyncTask.cpp | 2 +- Kernel/WorkQueue.cpp | 2 +- Kernel/init.cpp | 4 ++-- 10 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Kernel/Bus/USB/UHCI/UHCIController.cpp b/Kernel/Bus/USB/UHCI/UHCIController.cpp index 88f945408bd..3f98fe2f5cc 100644 --- a/Kernel/Bus/USB/UHCI/UHCIController.cpp +++ b/Kernel/Bus/USB/UHCI/UHCIController.cpp @@ -476,7 +476,7 @@ void UHCIController::spawn_port_proc() if (process_name.is_error()) TODO(); - Process::create_kernel_process(usb_hotplug_thread, process_name.release_value(), [&] { + (void)Process::create_kernel_process(usb_hotplug_thread, process_name.release_value(), [&] { for (;;) { if (m_root_hub) m_root_hub->check_for_port_updates(); diff --git a/Kernel/FileSystem/Plan9FileSystem.cpp b/Kernel/FileSystem/Plan9FileSystem.cpp index 38344986167..98a7fcff5e3 100644 --- a/Kernel/FileSystem/Plan9FileSystem.cpp +++ b/Kernel/FileSystem/Plan9FileSystem.cpp @@ -656,7 +656,7 @@ void Plan9FS::ensure_thread() auto process_name = KString::try_create("Plan9FS"); if (process_name.is_error()) TODO(); - Process::create_kernel_process(m_thread, process_name.release_value(), [&]() { + (void)Process::create_kernel_process(m_thread, process_name.release_value(), [&]() { thread_main(); m_thread_running.store(false, AK::MemoryOrder::memory_order_release); }); diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index f3b524d7b22..b23fd30cd77 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -319,7 +319,7 @@ ErrorOr VirtualFileSystem::mknod(StringView path, mode_t mode, dev_t dev, auto basename = KLexicalPath::basename(path); dbgln_if(VFS_DEBUG, "VirtualFileSystem::mknod: '{}' mode={} dev={} in {}", basename, mode, dev, parent_inode.identifier()); - TRY(parent_inode.create_child(basename, mode, dev, current_process.euid(), current_process.egid())); + (void)TRY(parent_inode.create_child(basename, mode, dev, current_process.euid(), current_process.egid())); return {}; } @@ -385,7 +385,7 @@ ErrorOr VirtualFileSystem::mkdir(StringView path, mode_t mode, Custody& ba auto basename = KLexicalPath::basename(path); dbgln_if(VFS_DEBUG, "VirtualFileSystem::mkdir: '{}' in {}", basename, parent_inode.identifier()); - TRY(parent_inode.create_child(basename, S_IFDIR | mode, 0, current_process.euid(), current_process.egid())); + (void)TRY(parent_inode.create_child(basename, S_IFDIR | mode, 0, current_process.euid(), current_process.egid())); return {}; } diff --git a/Kernel/Library/ThreadSafeNonnullRefPtr.h b/Kernel/Library/ThreadSafeNonnullRefPtr.h index 0f0a0b0eea9..e6ff2cf5bf5 100644 --- a/Kernel/Library/ThreadSafeNonnullRefPtr.h +++ b/Kernel/Library/ThreadSafeNonnullRefPtr.h @@ -40,7 +40,7 @@ ALWAYS_INLINE void unref_if_not_null(T* ptr) } template -class NonnullRefPtr { +class [[nodiscard]] NonnullRefPtr { template friend class RefPtr; template @@ -223,8 +223,10 @@ public: other.exchange(ptr); } + // clang-format off private: NonnullRefPtr() = delete; + // clang-format on ALWAYS_INLINE T* as_ptr() const { diff --git a/Kernel/Library/ThreadSafeRefPtr.h b/Kernel/Library/ThreadSafeRefPtr.h index 31f48247805..14cda73d65f 100644 --- a/Kernel/Library/ThreadSafeRefPtr.h +++ b/Kernel/Library/ThreadSafeRefPtr.h @@ -117,7 +117,7 @@ struct RefPtrTraits { }; template -class RefPtr { +class [[nodiscard]] RefPtr { template friend class RefPtr; template diff --git a/Kernel/Library/ThreadSafeWeakPtr.h b/Kernel/Library/ThreadSafeWeakPtr.h index c5675c57a08..3095e10260b 100644 --- a/Kernel/Library/ThreadSafeWeakPtr.h +++ b/Kernel/Library/ThreadSafeWeakPtr.h @@ -11,7 +11,7 @@ namespace AK { template -class WeakPtr { +class [[nodiscard]] WeakPtr { template friend class Weakable; diff --git a/Kernel/Net/NetworkTask.cpp b/Kernel/Net/NetworkTask.cpp index c24f14f1c7b..ffa9dc25da8 100644 --- a/Kernel/Net/NetworkTask.cpp +++ b/Kernel/Net/NetworkTask.cpp @@ -46,7 +46,7 @@ void NetworkTask::spawn() auto name = KString::try_create("NetworkTask"); if (name.is_error()) TODO(); - Process::create_kernel_process(thread, name.release_value(), NetworkTask_main, nullptr); + (void)Process::create_kernel_process(thread, name.release_value(), NetworkTask_main, nullptr); network_task = thread; } diff --git a/Kernel/Tasks/SyncTask.cpp b/Kernel/Tasks/SyncTask.cpp index c6e544afa86..7cb1dc20c5a 100644 --- a/Kernel/Tasks/SyncTask.cpp +++ b/Kernel/Tasks/SyncTask.cpp @@ -15,7 +15,7 @@ namespace Kernel { UNMAP_AFTER_INIT void SyncTask::spawn() { RefPtr syncd_thread; - Process::create_kernel_process(syncd_thread, KString::must_create("SyncTask"), [] { + (void)Process::create_kernel_process(syncd_thread, KString::must_create("SyncTask"), [] { dbgln("SyncTask is running"); for (;;) { VirtualFileSystem::sync(); diff --git a/Kernel/WorkQueue.cpp b/Kernel/WorkQueue.cpp index cee1bd288ef..2c820a9e78e 100644 --- a/Kernel/WorkQueue.cpp +++ b/Kernel/WorkQueue.cpp @@ -25,7 +25,7 @@ UNMAP_AFTER_INIT WorkQueue::WorkQueue(StringView name) auto name_kstring = KString::try_create(name); if (name_kstring.is_error()) TODO(); - Process::create_kernel_process(thread, name_kstring.release_value(), [this] { + (void)Process::create_kernel_process(thread, name_kstring.release_value(), [this] { for (;;) { WorkItem* item; bool have_more; diff --git a/Kernel/init.cpp b/Kernel/init.cpp index 7abc3a2f8f0..953af7cd285 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -220,7 +220,7 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init(BootInfo const& boot_info) { RefPtr init_stage2_thread; - Process::create_kernel_process(init_stage2_thread, KString::must_create("init_stage2"), init_stage2, nullptr, THREAD_AFFINITY_DEFAULT, Process::RegisterProcess::No); + (void)Process::create_kernel_process(init_stage2_thread, KString::must_create("init_stage2"), init_stage2, nullptr, THREAD_AFFINITY_DEFAULT, Process::RegisterProcess::No); // We need to make sure we drop the reference for init_stage2_thread // before calling into Scheduler::start, otherwise we will have a // dangling Thread that never gets cleaned up @@ -319,7 +319,7 @@ void init_stage2(void*) (void)RandomDevice::must_create().leak_ref(); PTYMultiplexer::initialize(); - SB16::try_detect_and_create(); + (void)SB16::try_detect_and_create(); AC97::detect(); StorageManagement::the().initialize(kernel_command_line().root_device(), kernel_command_line().is_force_pio());