# pm This module is a reimplementation of the Horizon OS's "pm" system module, which is responsible for tracking running processes on the system, and managing resource limits. ## Extensions Atmosphère extends this module with extra IPC commands and memory restriction changes. ### IPC Commands Atmosphère's reimplementation extends the HIPC loader services' API with several custom commands. The SwIPC definition for the `pm:dmnt` extension commands follows: ``` interface ams::pm::dmnt::DebugMonitorServiceBase is pm:dmnt { ... [65000] AtmosphereGetProcessInfo(os::ProcessId process_id) -> sf::OutCopyHandle out_process_handle, sf::Out out_loc, sf::Out out_status; [65001] AtmosphereGetCurrentLimitInfo(u32 group, u32 resource) -> sf::Out out_cur_val, sf::Out out_lim_val; } ``` The SwIPC definition for the `pm:info` extension commands follows: ``` interface ams::pm::info::InformationService is pm:info { ... [65000] AtmosphereGetProcessId(ncm::ProgramId program_id) -> sf::Out out; [65001] AtmosphereHasLaunchedProgram(ncm::ProgramId program_id) -> sf::Out out; [65002] AtmosphereGetProcessInfo(os::ProcessId process_id) -> sf::Out out_loc, sf::Out out_status; } ``` ### Extra System Memory Atmosphère's reimplementation shrinks the APPLET memory pool by 24 MiB by default, giving this memory to the SYSTEM pool. This allows custom system modules to use more memory without hitting the SYSTEM memory limit.