pm: update for new-ipc

This commit is contained in:
Michael Scire 2019-10-14 22:49:06 -07:00
parent d81f97862a
commit d1ae859891
10 changed files with 32 additions and 30 deletions

View File

@ -22,11 +22,11 @@
namespace sts::pm::dmnt { namespace sts::pm::dmnt {
/* Debug Monitor API. */ /* Debug Monitor API. */
Result StartProcess(u64 process_id); Result StartProcess(os::ProcessId process_id);
Result GetProcessId(u64 *out_process_id, const ncm::TitleId title_id); Result GetProcessId(os::ProcessId *out_process_id, const ncm::TitleId title_id);
Result GetApplicationProcessId(u64 *out_process_id); Result GetApplicationProcessId(os::ProcessId *out_process_id);
Result HookToCreateApplicationProcess(Handle *out_handle); Result HookToCreateApplicationProcess(Handle *out_handle);
Result AtmosphereGetProcessInfo(Handle *out_handle, ncm::TitleLocation *out_loc, u64 process_id); Result AtmosphereGetProcessInfo(Handle *out_handle, ncm::TitleLocation *out_loc, os::ProcessId process_id);
Result AtmosphereGetCurrentLimitInfo(u64 *out_current_value, u64 *out_limit_value, ResourceLimitGroup group, LimitableResource resource); Result AtmosphereGetCurrentLimitInfo(u64 *out_current_value, u64 *out_limit_value, ResourceLimitGroup group, LimitableResource resource);
} }

View File

@ -22,8 +22,8 @@
namespace sts::pm::info { namespace sts::pm::info {
/* Information API. */ /* Information API. */
Result GetTitleId(ncm::TitleId *out_title_id, u64 process_id); Result GetTitleId(ncm::TitleId *out_title_id, os::ProcessId process_id);
Result GetProcessId(u64 *out_process_id, ncm::TitleId title_id); Result GetProcessId(os::ProcessId *out_process_id, ncm::TitleId title_id);
Result HasLaunchedTitle(bool *out, ncm::TitleId title_id); Result HasLaunchedTitle(bool *out, ncm::TitleId title_id);
/* Information convenience API. */ /* Information convenience API. */

View File

@ -22,6 +22,6 @@
namespace sts::pm::shell { namespace sts::pm::shell {
/* Shell API. */ /* Shell API. */
Result LaunchTitle(u64 *out_process_id, const ncm::TitleLocation &loc, u32 launch_flags); Result LaunchTitle(os::ProcessId *out_process_id, const ncm::TitleLocation &loc, u32 launch_flags);
} }

View File

@ -16,6 +16,7 @@
#pragma once #pragma once
#include <switch.h> #include <switch.h>
#include "../os/os_common_types.hpp"
namespace sts::pm { namespace sts::pm {
@ -36,7 +37,7 @@ namespace sts::pm {
struct ProcessEventInfo { struct ProcessEventInfo {
u32 event; u32 event;
u64 process_id; os::ProcessId process_id;
}; };
static_assert(sizeof(ProcessEventInfo) == 0x10 && std::is_pod<ProcessEventInfo>::value, "ProcessEventInfo definition!"); static_assert(sizeof(ProcessEventInfo) == 0x10 && std::is_pod<ProcessEventInfo>::value, "ProcessEventInfo definition!");

View File

@ -581,7 +581,7 @@ namespace sts::sf::impl {
constexpr inline uintptr_t GetAddress() const { constexpr inline uintptr_t GetAddress() const {
static_assert(Offset <= Size, "Offset <= Size"); static_assert(Offset <= Size, "Offset <= Size");
static_assert(TypeSize <= Size, "TypeSize <= Size"); static_assert(TypeSize <= Size, "TypeSize <= Size");
static_assert(Offset + TypeSize <= Size, "Offset + TypeSize <= Size"); static_assert(Offset + TypeSize <= Size || false, "Offset + TypeSize <= Size");
return reinterpret_cast<uintptr_t>(&data[Offset]); return reinterpret_cast<uintptr_t>(&data[Offset]);
} }
@ -944,7 +944,7 @@ namespace sts::sf::impl {
} }
} else if constexpr (Info.arg_type == ArgumentType::OutData) { } else if constexpr (Info.arg_type == ArgumentType::OutData) {
/* New out rawdata. */ /* New out rawdata. */
constexpr size_t Offset = CommandMeta::InDataOffsets[Info.out_raw_data_index]; constexpr size_t Offset = CommandMeta::OutDataOffsets[Info.out_raw_data_index];
return T(out_raw_holder.template GetAddress<Offset, T::TypeSize>()); return T(out_raw_holder.template GetAddress<Offset, T::TypeSize>());
} else if constexpr (Info.arg_type == ArgumentType::InHandle) { } else if constexpr (Info.arg_type == ArgumentType::InHandle) {
/* New InHandle. */ /* New InHandle. */

View File

@ -18,12 +18,13 @@
#include "sm_types.hpp" #include "sm_types.hpp"
#include "../ncm/ncm_types.hpp" #include "../ncm/ncm_types.hpp"
#include "../os/os_common_types.hpp"
namespace sts::sm::manager { namespace sts::sm::manager {
/* Manager API. */ /* Manager API. */
Result RegisterProcess(u64 process_id, ncm::TitleId title_id, const void *acid, size_t acid_size, const void *aci, size_t aci_size); Result RegisterProcess(os::ProcessId process_id, ncm::TitleId title_id, const void *acid, size_t acid_size, const void *aci, size_t aci_size);
Result UnregisterProcess(u64 process_id); Result UnregisterProcess(os::ProcessId process_id);
/* Atmosphere extensions. */ /* Atmosphere extensions. */
Result EndInitialDefers(); Result EndInitialDefers();

View File

@ -23,16 +23,16 @@
namespace sts::pm::dmnt { namespace sts::pm::dmnt {
/* Debug Monitor API. */ /* Debug Monitor API. */
Result StartProcess(u64 process_id) { Result StartProcess(os::ProcessId process_id) {
return pmdmntStartProcess(process_id); return pmdmntStartProcess(static_cast<u64>(process_id));
} }
Result GetProcessId(u64 *out_process_id, const ncm::TitleId title_id) { Result GetProcessId(os::ProcessId *out_process_id, const ncm::TitleId title_id) {
return pmdmntGetTitlePid(out_process_id, static_cast<u64>(title_id)); return pmdmntGetTitlePid(reinterpret_cast<u64 *>(out_process_id), static_cast<u64>(title_id));
} }
Result GetApplicationProcessId(u64 *out_process_id) { Result GetApplicationProcessId(os::ProcessId *out_process_id) {
return pmdmntGetApplicationPid(out_process_id); return pmdmntGetApplicationPid(reinterpret_cast<u64 *>(out_process_id));
} }
Result HookToCreateApplicationProcess(Handle *out_handle) { Result HookToCreateApplicationProcess(Handle *out_handle) {
@ -42,10 +42,10 @@ namespace sts::pm::dmnt {
return ResultSuccess; return ResultSuccess;
} }
Result AtmosphereGetProcessInfo(Handle *out_handle, ncm::TitleLocation *out_loc, u64 process_id) { Result AtmosphereGetProcessInfo(Handle *out_handle, ncm::TitleLocation *out_loc, os::ProcessId process_id) {
*out_handle = INVALID_HANDLE; *out_handle = INVALID_HANDLE;
*out_loc = {}; *out_loc = {};
return pmdmntAtmosphereGetProcessInfo(out_handle, reinterpret_cast<u64 *>(&out_loc->title_id), &out_loc->storage_id, process_id); return pmdmntAtmosphereGetProcessInfo(out_handle, reinterpret_cast<u64 *>(&out_loc->title_id), &out_loc->storage_id, static_cast<u64>(process_id));
} }
Result AtmosphereGetCurrentLimitInfo(u64 *out_current_value, u64 *out_limit_value, ResourceLimitGroup group, LimitableResource resource) { Result AtmosphereGetCurrentLimitInfo(u64 *out_current_value, u64 *out_limit_value, ResourceLimitGroup group, LimitableResource resource) {

View File

@ -31,16 +31,16 @@ namespace sts::pm::info {
} }
/* Information API. */ /* Information API. */
Result GetTitleId(ncm::TitleId *out_title_id, u64 process_id) { Result GetTitleId(ncm::TitleId *out_title_id, os::ProcessId process_id) {
std::scoped_lock lk(g_info_lock); std::scoped_lock lk(g_info_lock);
return pminfoGetTitleId(reinterpret_cast<u64 *>(out_title_id), process_id); return pminfoGetTitleId(reinterpret_cast<u64 *>(out_title_id), static_cast<u64>(process_id));
} }
Result GetProcessId(u64 *out_process_id, ncm::TitleId title_id) { Result GetProcessId(os::ProcessId *out_process_id, ncm::TitleId title_id) {
std::scoped_lock lk(g_info_lock); std::scoped_lock lk(g_info_lock);
return pminfoAtmosphereGetProcessId(out_process_id, static_cast<u64>(title_id)); return pminfoAtmosphereGetProcessId(reinterpret_cast<u64 *>(out_process_id), static_cast<u64>(title_id));
} }
Result WEAK HasLaunchedTitle(bool *out, ncm::TitleId title_id) { Result WEAK HasLaunchedTitle(bool *out, ncm::TitleId title_id) {

View File

@ -21,8 +21,8 @@
namespace sts::pm::shell { namespace sts::pm::shell {
/* Shell API. */ /* Shell API. */
Result WEAK LaunchTitle(u64 *out_process_id, const ncm::TitleLocation &loc, u32 launch_flags) { Result WEAK LaunchTitle(os::ProcessId *out_process_id, const ncm::TitleLocation &loc, u32 launch_flags) {
return pmshellLaunchProcess(launch_flags, static_cast<u64>(loc.title_id), loc.storage_id, out_process_id); return pmshellLaunchProcess(launch_flags, static_cast<u64>(loc.title_id), loc.storage_id, reinterpret_cast<u64 *>(out_process_id));
} }
} }

View File

@ -24,12 +24,12 @@
namespace sts::sm::manager { namespace sts::sm::manager {
/* Manager API. */ /* Manager API. */
Result RegisterProcess(u64 process_id, ncm::TitleId title_id, const void *acid, size_t acid_size, const void *aci, size_t aci_size) { Result RegisterProcess(os::ProcessId process_id, ncm::TitleId title_id, const void *acid, size_t acid_size, const void *aci, size_t aci_size) {
return smManagerAtmosphereRegisterProcess(process_id, static_cast<u64>(title_id), acid, acid_size, aci, aci_size); return smManagerAtmosphereRegisterProcess(static_cast<u64>(process_id), static_cast<u64>(title_id), acid, acid_size, aci, aci_size);
} }
Result UnregisterProcess(u64 process_id) { Result UnregisterProcess(os::ProcessId process_id) {
return smManagerUnregisterProcess(process_id); return smManagerUnregisterProcess(static_cast<u64>(process_id));
} }
/* Atmosphere extensions. */ /* Atmosphere extensions. */