mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 22:05:07 +00:00

This subdirectory is meant to hold all constant data related to the kernel. This means that this data is never meant to updated and is relevant from system boot to system shutdown. Move the inodes of "load_base", "cmdline" and "system_mode" to that directory. All nodes under this new subdirectory are generated during boot, and therefore don't require calling kmalloc each time we need to read them. Locking is also not necessary, because these nodes and their data are completely static once being generated.
61 lines
3.3 KiB
C++
61 lines
3.3 KiB
C++
/*
|
|
* Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <AK/Error.h>
|
|
#include <AK/Try.h>
|
|
#include <Kernel/FileSystem/SysFS/Component.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/CPUInfo.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Constants/Directory.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Directory.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/DiskUsage.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/GlobalInformation.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Interrupts.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Jails.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Keymap.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Log.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/MemoryStatus.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Network/Directory.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/PowerStateSwitch.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Processes.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Profile.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/SystemStatistics.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Uptime.h>
|
|
#include <Kernel/FileSystem/SysFS/Subsystems/Kernel/Variables/Directory.h>
|
|
|
|
namespace Kernel {
|
|
|
|
UNMAP_AFTER_INIT NonnullLockRefPtr<SysFSGlobalKernelStatsDirectory> SysFSGlobalKernelStatsDirectory::must_create(SysFSRootDirectory const& root_directory)
|
|
{
|
|
auto global_kernel_stats_directory = adopt_lock_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<void> {
|
|
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));
|
|
list.append(SysFSOverallProcesses::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSCPUInformation::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSKernelLog::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSInterrupts::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSKeymap::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSUptime::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSProfile::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSPowerStateSwitchNode::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSJails::must_create(*global_kernel_stats_directory));
|
|
|
|
list.append(SysFSGlobalNetworkStatsDirectory::must_create(*global_kernel_stats_directory));
|
|
list.append(SysFSGlobalKernelVariablesDirectory::must_create(*global_kernel_stats_directory));
|
|
return {};
|
|
}));
|
|
return global_kernel_stats_directory;
|
|
}
|
|
|
|
UNMAP_AFTER_INIT SysFSGlobalKernelStatsDirectory::SysFSGlobalKernelStatsDirectory(SysFSDirectory const& root_directory)
|
|
: SysFSDirectory(root_directory)
|
|
{
|
|
}
|
|
|
|
}
|