mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-09 21:51:45 +00:00
48 lines
2 KiB
Markdown
48 lines
2 KiB
Markdown
|
# sm
|
||
|
This module is a reimplementation of the Horizon OS's "sm" system module, which is responsible for service management.
|
||
|
|
||
|
## Extensions
|
||
|
Atmosphère extends this module with extra IPC commands and new services.
|
||
|
|
||
|
### Debug Monitor
|
||
|
Atmosphère's reimplementation provides an interface `sm:dmnt` to allow a debug monitor to query the service manager's state.
|
||
|
|
||
|
The SwIPC definition for `sm:dmnt` follows:
|
||
|
```
|
||
|
interface ams::sm::DmntService is sm:dmnt {
|
||
|
[65000] AtmosphereGetRecord(ServiceName service) -> sf::Out<ServiceRecord> record;
|
||
|
[65001] AtmosphereListRecords(u64 offset) -> sf::OutArray<ServiceRecord> &records, sf::Out<u64> out_count;
|
||
|
[65002] AtmosphereGetRecordSize() -> sf::Out<u64> record_size;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### IPC Commands
|
||
|
Atmosphère's reimplementation extends the HIPC loader services' API with several custom commands.
|
||
|
|
||
|
The SwIPC definition for the `sm:` extension commands follows:
|
||
|
```
|
||
|
interface ams::sm::UserService is sm: {
|
||
|
...
|
||
|
[65000] AtmosphereInstallMitm(ServiceName service) -> sf::OutMoveHandle srv_h, sf::OutMoveHandle qry_h;
|
||
|
[65001] AtmosphereUninstallMitm(ServiceName service);
|
||
|
[65002] Deprecated_AtmosphereAssociatePidTidForMitm();
|
||
|
[65003] AtmosphereAcknowledgeMitmSession(ServiceName service) -> sf::Out<MitmProcessInfo> client_info, sf::OutMoveHandle fwd_h;
|
||
|
[65004] AtmosphereHasMitm(ServiceName service) -> sf::Out<bool> out;
|
||
|
[65005] AtmosphereWaitMitm(ServiceName service);
|
||
|
[65006] AtmosphereDeclareFutureMitm(ServiceName service);
|
||
|
|
||
|
[65100] AtmosphereHasService(ServiceName service) -> sf::Out<bool> out;
|
||
|
[65101] AtmosphereWaitService(ServiceName service);
|
||
|
}
|
||
|
```
|
||
|
|
||
|
The SwIPC definition for the `sm:m` extension commands follows:
|
||
|
```
|
||
|
interface ams::sm::ManagerService is sm:m {
|
||
|
...
|
||
|
[65000] AtmosphereEndInitDefers(os::ProcessId process_id, sf::InBuffer &acid_sac, sf::InBuffer &aci_sac);
|
||
|
[65001] AtmosphereHasMitm(ServiceName service) -> sf::Out<bool> out;
|
||
|
[65002] AtmosphereRegisterProcess(os::ProcessId process_id, ncm::ProgramId program_id, cfg::OverrideStatus override_status, sf::InBuffer &acid_sac, sf::InBuffer &aci_sac);
|
||
|
}
|
||
|
```
|