diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index 140834484d..c60d75982d 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -13,8 +13,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -22,7 +24,6 @@ #include #include #include -#include #include enum ProcParentDirectory { @@ -52,6 +53,7 @@ enum ProcFileType { FI_Root_devices, FI_Root_uptime, FI_Root_cmdline, + FI_Root_modules, FI_Root_self, // symlink FI_Root_sys, // directory FI_Root_net, // directory @@ -325,6 +327,21 @@ Optional procfs$cmdline(InodeIdentifier) return builder.build(); } +Optional procfs$modules(InodeIdentifier) +{ + extern HashMap>* g_modules; + KBufferBuilder builder; + JsonArraySerializer array { builder }; + for (auto& it : *g_modules) { + auto obj = array.add_object(); + obj.add("name", it.value->name); + obj.add("module_init", (u32)it.value->module_init); + obj.add("module_fini", (u32)it.value->module_fini); + } + array.finish(); + return builder.build(); +} + Optional procfs$net_adapters(InodeIdentifier) { KBufferBuilder builder; @@ -1291,6 +1308,7 @@ ProcFS::ProcFS() m_entries[FI_Root_devices] = { "devices", FI_Root_devices, procfs$devices }; m_entries[FI_Root_uptime] = { "uptime", FI_Root_uptime, procfs$uptime }; m_entries[FI_Root_cmdline] = { "cmdline", FI_Root_cmdline, procfs$cmdline }; + m_entries[FI_Root_modules] = { "modules", FI_Root_modules, procfs$modules }; m_entries[FI_Root_sys] = { "sys", FI_Root_sys }; m_entries[FI_Root_net] = { "net", FI_Root_net };