From 75f01692b4cb89f4058467bd49807fe41e4f1d52 Mon Sep 17 00:00:00 2001 From: Liav A Date: Sat, 15 Oct 2022 05:57:20 +0300 Subject: [PATCH] Kernel+Userland: Move /sys/firmware/power_state to /sys/kernel directory Let's put the power_state global node into the /sys/kernel directory, because that directory represents all global nodes and variables being related to the Kernel. It's also a mutable node, that is more acceptable being in the mentioned directory due to the fact that all other files in the /sys/firmware directory are just firmware blobs and are not mutable at all. --- Base/usr/share/man/man1/reboot.md | 2 +- Base/usr/share/man/man1/shutdown.md | 2 +- Kernel/CMakeLists.txt | 2 +- .../SysFS/Subsystems/Firmware/Directory.cpp | 2 -- .../SysFS/Subsystems/Kernel/Directory.cpp | 2 ++ .../{Firmware => Kernel}/PowerStateSwitch.cpp | 20 +++++++++---------- .../{Firmware => Kernel}/PowerStateSwitch.h | 8 ++++---- Userland/Utilities/reboot.cpp | 2 +- Userland/Utilities/shutdown.cpp | 2 +- 9 files changed, 21 insertions(+), 21 deletions(-) rename Kernel/FileSystem/SysFS/Subsystems/{Firmware => Kernel}/PowerStateSwitch.cpp (74%) rename Kernel/FileSystem/SysFS/Subsystems/{Firmware => Kernel}/PowerStateSwitch.h (74%) diff --git a/Base/usr/share/man/man1/reboot.md b/Base/usr/share/man/man1/reboot.md index 4ef0b61356..9e105a1006 100644 --- a/Base/usr/share/man/man1/reboot.md +++ b/Base/usr/share/man/man1/reboot.md @@ -14,5 +14,5 @@ $ reboot ## Notes -The `reboot` utility opens the `/sys/firmware/power_state` node and writes the magic value "1" +The `reboot` utility opens the `/sys/kernel/power_state` node and writes the magic value "1" to instruct the kernel to reboot the machine. diff --git a/Base/usr/share/man/man1/shutdown.md b/Base/usr/share/man/man1/shutdown.md index 70d18fbdf9..42c0af7cf4 100644 --- a/Base/usr/share/man/man1/shutdown.md +++ b/Base/usr/share/man/man1/shutdown.md @@ -14,5 +14,5 @@ $ shutdown ## Notes -The `shutdown` utility opens the `/sys/firmware/power_state` node and writes the magic value "2" +The `shutdown` utility opens the `/sys/kernel/power_state` node and writes the magic value "2" to instruct the kernel to power off the machine. diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 8feeacafc7..84f775b433 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -149,7 +149,6 @@ set(KERNEL_SOURCES FileSystem/SysFS/Subsystems/Firmware/BIOS/Component.cpp FileSystem/SysFS/Subsystems/Firmware/BIOS/Directory.cpp FileSystem/SysFS/Subsystems/Firmware/Directory.cpp - FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.cpp FileSystem/SysFS/Subsystems/Kernel/CommandLine.cpp FileSystem/SysFS/Subsystems/Kernel/Interrupts.cpp FileSystem/SysFS/Subsystems/Kernel/Processes.cpp @@ -164,6 +163,7 @@ set(KERNEL_SOURCES FileSystem/SysFS/Subsystems/Kernel/SystemStatistics.cpp FileSystem/SysFS/Subsystems/Kernel/GlobalInformation.cpp FileSystem/SysFS/Subsystems/Kernel/MemoryStatus.cpp + FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.cpp FileSystem/SysFS/Subsystems/Kernel/Uptime.cpp FileSystem/SysFS/Subsystems/Kernel/Network/Adapters.cpp FileSystem/SysFS/Subsystems/Kernel/Network/ARP.cpp diff --git a/Kernel/FileSystem/SysFS/Subsystems/Firmware/Directory.cpp b/Kernel/FileSystem/SysFS/Subsystems/Firmware/Directory.cpp index adbc110da0..986f7397eb 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Firmware/Directory.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Firmware/Directory.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include #include @@ -26,7 +25,6 @@ void FirmwareSysFSDirectory::create_components() list.append(BIOSSysFSDirectory::must_create(*this)); if (ACPI::is_enabled()) list.append(ACPI::ACPISysFSDirectory::must_create(*this)); - list.append(PowerStateSwitchNode::must_create(*this)); return {}; })); } diff --git a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp index 8d8bc394b7..18980243b0 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ UNMAP_AFTER_INIT NonnullLockRefPtr SysFSGlobalK list.append(SysFSSystemMode::must_create(*global_kernel_stats_directory)); list.append(SysFSProfile::must_create(*global_kernel_stats_directory)); list.append(SysFSKernelLoadBase::must_create(*global_kernel_stats_directory)); + list.append(SysFSPowerStateSwitchNode::must_create(*global_kernel_stats_directory)); list.append(SysFSGlobalNetworkStatsDirectory::must_create(*global_kernel_stats_directory)); list.append(SysFSGlobalKernelVariablesDirectory::must_create(*global_kernel_stats_directory)); diff --git a/Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.cpp b/Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.cpp similarity index 74% rename from Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.cpp rename to Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.cpp index b9d225ffaf..747f2af126 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.cpp @@ -11,7 +11,7 @@ # include #endif #include -#include +#include #include #include #include @@ -19,22 +19,22 @@ namespace Kernel { -mode_t PowerStateSwitchNode::permissions() const +mode_t SysFSPowerStateSwitchNode::permissions() const { return S_IRUSR | S_IRGRP | S_IWUSR | S_IWGRP; } -UNMAP_AFTER_INIT NonnullLockRefPtr PowerStateSwitchNode::must_create(FirmwareSysFSDirectory& firmware_directory) +UNMAP_AFTER_INIT NonnullLockRefPtr SysFSPowerStateSwitchNode::must_create(SysFSDirectory const& parent_directory) { - return adopt_lock_ref_if_nonnull(new (nothrow) PowerStateSwitchNode(firmware_directory)).release_nonnull(); + return adopt_lock_ref_if_nonnull(new (nothrow) SysFSPowerStateSwitchNode(parent_directory)).release_nonnull(); } -UNMAP_AFTER_INIT PowerStateSwitchNode::PowerStateSwitchNode(FirmwareSysFSDirectory&) - : SysFSComponent() +UNMAP_AFTER_INIT SysFSPowerStateSwitchNode::SysFSPowerStateSwitchNode(SysFSDirectory const& parent_directory) + : SysFSComponent(parent_directory) { } -ErrorOr PowerStateSwitchNode::truncate(u64 size) +ErrorOr SysFSPowerStateSwitchNode::truncate(u64 size) { // Note: This node doesn't store any useful data anyway, so we can safely // truncate this to zero (essentially ignoring the request without failing). @@ -43,7 +43,7 @@ ErrorOr PowerStateSwitchNode::truncate(u64 size) return {}; } -ErrorOr PowerStateSwitchNode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& data, OpenFileDescription*) +ErrorOr SysFSPowerStateSwitchNode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& data, OpenFileDescription*) { if (Checked::addition_would_overflow(offset, count)) return EOVERFLOW; @@ -69,7 +69,7 @@ ErrorOr PowerStateSwitchNode::write_bytes(off_t offset, size_t count, Us VERIFY_NOT_REACHED(); } -void PowerStateSwitchNode::reboot() +void SysFSPowerStateSwitchNode::reboot() { MutexLocker locker(Process::current().big_lock()); @@ -88,7 +88,7 @@ void PowerStateSwitchNode::reboot() Processor::halt(); } -void PowerStateSwitchNode::poweroff() +void SysFSPowerStateSwitchNode::poweroff() { MutexLocker locker(Process::current().big_lock()); diff --git a/Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.h b/Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.h similarity index 74% rename from Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.h rename to Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.h index ba2f979d28..1c4c7adfbb 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Firmware/PowerStateSwitch.h +++ b/Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.h @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include @@ -20,16 +20,16 @@ namespace Kernel { -class PowerStateSwitchNode final : public SysFSComponent { +class SysFSPowerStateSwitchNode final : public SysFSComponent { public: virtual StringView name() const override { return "power_state"sv; } - static NonnullLockRefPtr must_create(FirmwareSysFSDirectory&); + static NonnullLockRefPtr must_create(SysFSDirectory const&); virtual mode_t permissions() const override; virtual ErrorOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) override; virtual ErrorOr truncate(u64) override; private: - PowerStateSwitchNode(FirmwareSysFSDirectory&); + explicit SysFSPowerStateSwitchNode(SysFSDirectory const&); void reboot(); void poweroff(); diff --git a/Userland/Utilities/reboot.cpp b/Userland/Utilities/reboot.cpp index 3f54e7d9b0..8e24597cd1 100644 --- a/Userland/Utilities/reboot.cpp +++ b/Userland/Utilities/reboot.cpp @@ -10,7 +10,7 @@ ErrorOr serenity_main(Main::Arguments) { - auto file = TRY(Core::Stream::File::open("/sys/firmware/power_state"sv, Core::Stream::OpenMode::Write)); + auto file = TRY(Core::Stream::File::open("/sys/kernel/power_state"sv, Core::Stream::OpenMode::Write)); const String file_contents = "1"; TRY(file->write(file_contents.bytes())); diff --git a/Userland/Utilities/shutdown.cpp b/Userland/Utilities/shutdown.cpp index 5801c08278..d33abba306 100644 --- a/Userland/Utilities/shutdown.cpp +++ b/Userland/Utilities/shutdown.cpp @@ -14,7 +14,7 @@ ErrorOr serenity_main(Main::Arguments) { - auto file = TRY(Core::Stream::File::open("/sys/firmware/power_state"sv, Core::Stream::OpenMode::Write)); + auto file = TRY(Core::Stream::File::open("/sys/kernel/power_state"sv, Core::Stream::OpenMode::Write)); const String file_contents = "2"; TRY(file->write(file_contents.bytes()));