From aee5f4e4b2a77f3a680cafeeae765f564bede8c7 Mon Sep 17 00:00:00 2001 From: Liav A Date: Sat, 12 Aug 2023 14:06:35 +0300 Subject: [PATCH] Kernel: Remove the /sys/kernel/constants directory The name for this directory is a bit awkward. Also, the distinction of constant information is not really valuable as I thought it would be, so let's bring that information back into the /sys/kernel directory. --- Kernel/CMakeLists.txt | 3 +- .../{Constants => }/ConstantInformation.cpp | 2 +- .../{Constants => }/ConstantInformation.h | 0 .../Subsystems/Kernel/Constants/Directory.cpp | 56 ------------------- .../Subsystems/Kernel/Constants/Directory.h | 24 -------- .../SysFS/Subsystems/Kernel/Directory.cpp | 31 +++++++++- .../LibSymbolication/Symbolication.cpp | 2 +- Userland/Services/SystemServer/main.cpp | 2 +- 8 files changed, 32 insertions(+), 88 deletions(-) rename Kernel/FileSystem/SysFS/Subsystems/Kernel/{Constants => }/ConstantInformation.cpp (95%) rename Kernel/FileSystem/SysFS/Subsystems/Kernel/{Constants => }/ConstantInformation.h (100%) delete mode 100644 Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.cpp delete mode 100644 Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.h diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 72b2aa387a..51e7c759bd 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -182,6 +182,7 @@ set(KERNEL_SOURCES FileSystem/SysFS/Subsystems/Kernel/Interrupts.cpp FileSystem/SysFS/Subsystems/Kernel/Processes.cpp FileSystem/SysFS/Subsystems/Kernel/CPUInfo.cpp + FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.cpp FileSystem/SysFS/Subsystems/Kernel/Jails.cpp FileSystem/SysFS/Subsystems/Kernel/Keymap.cpp FileSystem/SysFS/Subsystems/Kernel/Profile.cpp @@ -200,8 +201,6 @@ set(KERNEL_SOURCES FileSystem/SysFS/Subsystems/Kernel/Network/Route.cpp FileSystem/SysFS/Subsystems/Kernel/Network/TCP.cpp FileSystem/SysFS/Subsystems/Kernel/Network/UDP.cpp - FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.cpp - FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.cpp FileSystem/SysFS/Subsystems/Kernel/Configuration/BooleanVariable.cpp FileSystem/SysFS/Subsystems/Kernel/Configuration/CapsLockRemap.cpp FileSystem/SysFS/Subsystems/Kernel/Configuration/CoredumpDirectory.cpp diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.cpp b/Kernel/FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.cpp similarity index 95% rename from Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.cpp rename to Kernel/FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.cpp index ed4f257f3b..b317a34199 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.h b/Kernel/FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.h similarity index 100% rename from Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/ConstantInformation.h rename to Kernel/FileSystem/SysFS/Subsystems/Kernel/ConstantInformation.h diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.cpp b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.cpp deleted file mode 100644 index 9a68411b16..0000000000 --- a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2023, Liav A. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include -#include -#include -#include -#include -#include - -namespace Kernel { - -UNMAP_AFTER_INIT NonnullRefPtr SysFSGlobalKernelConstantsDirectory::must_create(SysFSDirectory const& parent_directory) -{ - auto global_constants_directory = adopt_ref_if_nonnull(new (nothrow) SysFSGlobalKernelConstantsDirectory(parent_directory)).release_nonnull(); - MUST(global_constants_directory->m_child_components.with([&](auto& list) -> ErrorOr { - { - auto builder = TRY(KBufferBuilder::try_create()); - MUST(builder.appendff("{}", kernel_load_base)); - auto load_base_buffer = builder.build(); - VERIFY(load_base_buffer); - list.append(SysFSSystemConstantInformation::must_create(*global_constants_directory, load_base_buffer.release_nonnull(), S_IRUSR, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::LoadBase)); - } - - { - auto builder = TRY(KBufferBuilder::try_create()); - MUST(builder.append(kernel_command_line().string())); - MUST(builder.append('\n')); - auto command_line_buffer = builder.build(); - VERIFY(command_line_buffer); - list.append(SysFSSystemConstantInformation::must_create(*global_constants_directory, command_line_buffer.release_nonnull(), S_IRUSR | S_IRGRP | S_IROTH, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::CommandLine)); - } - - { - auto builder = TRY(KBufferBuilder::try_create()); - MUST(builder.append(kernel_command_line().system_mode())); - MUST(builder.append('\n')); - auto system_mode_buffer = builder.build(); - VERIFY(system_mode_buffer); - list.append(SysFSSystemConstantInformation::must_create(*global_constants_directory, system_mode_buffer.release_nonnull(), S_IRUSR | S_IRGRP | S_IROTH, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::SystemMode)); - } - return {}; - })); - return global_constants_directory; -} - -UNMAP_AFTER_INIT SysFSGlobalKernelConstantsDirectory::SysFSGlobalKernelConstantsDirectory(SysFSDirectory const& parent_directory) - : SysFSDirectory(parent_directory) -{ -} - -} diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.h b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.h deleted file mode 100644 index a54f3c756b..0000000000 --- a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2023, Liav A. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include -#include -#include - -namespace Kernel { - -class SysFSGlobalKernelConstantsDirectory : public SysFSDirectory { -public: - static NonnullRefPtr must_create(SysFSDirectory const&); - virtual StringView name() const override { return "constants"sv; } - -private: - explicit SysFSGlobalKernelConstantsDirectory(SysFSDirectory const&); -}; - -} diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp index a57280739a..1fd17aac15 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp @@ -6,10 +6,11 @@ #include #include +#include #include #include #include -#include +#include #include #include #include @@ -30,9 +31,7 @@ namespace Kernel { UNMAP_AFTER_INIT NonnullRefPtr SysFSGlobalKernelStatsDirectory::must_create(SysFSRootDirectory const& root_directory) { auto global_kernel_stats_directory = adopt_ref_if_nonnull(new (nothrow) SysFSGlobalKernelStatsDirectory(root_directory)).release_nonnull(); - auto global_constants_directory = SysFSGlobalKernelConstantsDirectory::must_create(*global_kernel_stats_directory); MUST(global_kernel_stats_directory->m_child_components.with([&](auto& list) -> ErrorOr { - list.append(global_constants_directory); list.append(SysFSDiskUsage::must_create(*global_kernel_stats_directory)); list.append(SysFSMemoryStatus::must_create(*global_kernel_stats_directory)); list.append(SysFSSystemStatistics::must_create(*global_kernel_stats_directory)); @@ -48,6 +47,32 @@ UNMAP_AFTER_INIT NonnullRefPtr SysFSGlobalKerne list.append(SysFSGlobalNetworkStatsDirectory::must_create(*global_kernel_stats_directory)); list.append(SysFSKernelConfigurationDirectory::must_create(*global_kernel_stats_directory)); + + { + auto builder = TRY(KBufferBuilder::try_create()); + MUST(builder.appendff("{}", kernel_load_base)); + auto load_base_buffer = builder.build(); + VERIFY(load_base_buffer); + list.append(SysFSSystemConstantInformation::must_create(*global_kernel_stats_directory, load_base_buffer.release_nonnull(), S_IRUSR, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::LoadBase)); + } + + { + auto builder = TRY(KBufferBuilder::try_create()); + MUST(builder.append(kernel_command_line().string())); + MUST(builder.append('\n')); + auto command_line_buffer = builder.build(); + VERIFY(command_line_buffer); + list.append(SysFSSystemConstantInformation::must_create(*global_kernel_stats_directory, command_line_buffer.release_nonnull(), S_IRUSR | S_IRGRP | S_IROTH, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::CommandLine)); + } + + { + auto builder = TRY(KBufferBuilder::try_create()); + MUST(builder.append(kernel_command_line().system_mode())); + MUST(builder.append('\n')); + auto system_mode_buffer = builder.build(); + VERIFY(system_mode_buffer); + list.append(SysFSSystemConstantInformation::must_create(*global_kernel_stats_directory, system_mode_buffer.release_nonnull(), S_IRUSR | S_IRGRP | S_IROTH, SysFSSystemConstantInformation::ReadableByJailedProcesses::No, SysFSSystemConstantInformation::NodeName::SystemMode)); + } return {}; })); return global_kernel_stats_directory; diff --git a/Userland/Libraries/LibSymbolication/Symbolication.cpp b/Userland/Libraries/LibSymbolication/Symbolication.cpp index f299ba1738..29afeb7ed0 100644 --- a/Userland/Libraries/LibSymbolication/Symbolication.cpp +++ b/Userland/Libraries/LibSymbolication/Symbolication.cpp @@ -38,7 +38,7 @@ static KernelBaseState s_kernel_base_state = KernelBaseState::Uninitialized; Optional kernel_base() { if (s_kernel_base_state == KernelBaseState::Uninitialized) { - auto file = Core::File::open("/sys/kernel/constants/load_base"sv, Core::File::OpenMode::Read); + auto file = Core::File::open("/sys/kernel/load_base"sv, Core::File::OpenMode::Read); if (file.is_error()) { s_kernel_base_state = KernelBaseState::Invalid; return {}; diff --git a/Userland/Services/SystemServer/main.cpp b/Userland/Services/SystemServer/main.cpp index 98f4f45a8c..7739a1385b 100644 --- a/Userland/Services/SystemServer/main.cpp +++ b/Userland/Services/SystemServer/main.cpp @@ -72,7 +72,7 @@ static ErrorOr determine_system_mode() g_system_mode = "text"; }); - auto file_or_error = Core::File::open("/sys/kernel/constants/system_mode"sv, Core::File::OpenMode::Read); + auto file_or_error = Core::File::open("/sys/kernel/system_mode"sv, Core::File::OpenMode::Read); if (file_or_error.is_error()) { dbgln("Failed to read system_mode: {}", file_or_error.error()); // Continue and assume "text" mode.