From 69dbb69e0b32aa7b977e144fe7a8355868abd04a Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Thu, 4 Jul 2019 12:50:10 -0700 Subject: [PATCH] sm: add api for forward declaring a service mitm --- include/stratosphere/sm/sm_mitm_api.hpp | 2 +- source/sm/sm_ams.c | 11 ++++------- source/sm/sm_ams.h | 2 +- source/sm/sm_mitm_api.cpp | 4 ++-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/include/stratosphere/sm/sm_mitm_api.hpp b/include/stratosphere/sm/sm_mitm_api.hpp index 6067941e..392c5053 100644 --- a/include/stratosphere/sm/sm_mitm_api.hpp +++ b/include/stratosphere/sm/sm_mitm_api.hpp @@ -24,7 +24,7 @@ namespace sts::sm::mitm { /* Mitm API. */ Result InstallMitm(Handle *out_port, Handle *out_query, ServiceName name); Result UninstallMitm(ServiceName name); - Result AssociateProcessIdAndTitleId(u64 process_id, u64 title_id); + Result DeclareFutureMitm(ServiceName name); Result AcknowledgeSession(Service *out_service, u64 *out_pid, ncm::TitleId *out_tid, ServiceName name); Result HasMitm(bool *out, ServiceName name); Result WaitMitm(ServiceName name); diff --git a/source/sm/sm_ams.c b/source/sm/sm_ams.c index 0af346ae..628ff2fb 100644 --- a/source/sm/sm_ams.c +++ b/source/sm/sm_ams.c @@ -301,7 +301,7 @@ Result smAtmosphereMitmUninstall(const char *name) { return rc; } -Result smAtmosphereMitmAssociateProcessIdAndTitleId(u64 pid, u64 tid) { +Result smAtmosphereMitmDeclareFuture(const char *name) { IpcCommand c; ipcInitialize(&c); Service *srv = &g_smMitmSrv; @@ -309,15 +309,13 @@ Result smAtmosphereMitmAssociateProcessIdAndTitleId(u64 pid, u64 tid) { struct { u64 magic; u64 cmd_id; - u64 pid; - u64 tid; + u64 service_name; } *raw; raw = serviceIpcPrepareHeader(srv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = 65002; - raw->pid = pid; - raw->tid = tid; + raw->cmd_id = 65006; + raw->service_name = smEncodeName(name); Result rc = serviceIpcDispatch(srv); @@ -330,7 +328,6 @@ Result smAtmosphereMitmAssociateProcessIdAndTitleId(u64 pid, u64 tid) { serviceIpcParse(srv, &r, sizeof(*resp)); resp = r.Raw; - rc = resp->result; } diff --git a/source/sm/sm_ams.h b/source/sm/sm_ams.h index 4f24d6cc..67c9b889 100644 --- a/source/sm/sm_ams.h +++ b/source/sm/sm_ams.h @@ -21,7 +21,7 @@ void smAtmosphereMitmExit(void); Result smAtmosphereMitmInstall(Handle *handle_out, Handle *query_out, const char *name); Result smAtmosphereMitmUninstall(const char *name); -Result smAtmosphereMitmAssociateProcessIdAndTitleId(u64 pid, u64 tid); +Result smAtmosphereMitmDeclareFuture(const char *name); Result smAtmosphereMitmAcknowledgeSession(Service *srv_out, u64 *pid_out, u64 *tid_out, const char *name); #ifdef __cplusplus diff --git a/source/sm/sm_mitm_api.cpp b/source/sm/sm_mitm_api.cpp index 7d490a3d..b69c26cd 100644 --- a/source/sm/sm_mitm_api.cpp +++ b/source/sm/sm_mitm_api.cpp @@ -36,9 +36,9 @@ namespace sts::sm::mitm { }); } - Result AssociateProcessIdAndTitleId(u64 process_id, u64 title_id) { + Result DeclareFutureMitm(ServiceName name) { return impl::DoWithMitmSession([&]() { - return smAtmosphereMitmAssociateProcessIdAndTitleId(process_id, title_id); + return smAtmosphereMitmDeclareFuture(name.name); }); }