ams_mitm: begin skeleton refactor

This commit is contained in:
Michael Scire
2019-11-20 23:58:18 -08:00
committed by SciresM
parent 02d4c97c6d
commit 393596ef9a
105 changed files with 1541 additions and 352 deletions

View File

@@ -22,7 +22,8 @@ namespace ams::sm::impl {
/* Utilities. */
os::RecursiveMutex &GetUserSessionMutex();
os::RecursiveMutex &GetMitmSessionMutex();
os::RecursiveMutex &GetMitmAcknowledgementSessionMutex();
os::RecursiveMutex &GetPerThreadSessionMutex();
template<typename F>
Result DoWithUserSession(F f) {
@@ -36,8 +37,8 @@ namespace ams::sm::impl {
}
template<typename F>
Result DoWithMitmSession(F f) {
std::scoped_lock<os::RecursiveMutex &> lk(GetMitmSessionMutex());
Result DoWithMitmAcknowledgementSession(F f) {
std::scoped_lock<os::RecursiveMutex &> lk(GetMitmAcknowledgementSessionMutex());
{
R_ASSERT(smAtmosphereMitmInitialize());
ON_SCOPE_EXIT { smAtmosphereMitmExit(); };
@@ -46,6 +47,19 @@ namespace ams::sm::impl {
}
}
template<typename F>
Result DoWithPerThreadSession(F f) {
Service srv;
{
std::scoped_lock<os::RecursiveMutex &> lk(GetPerThreadSessionMutex());
R_ASSERT(smAtmosphereOpenSession(&srv));
}
{
ON_SCOPE_EXIT { smAtmosphereCloseSession(&srv); };
return f(&srv);
}
}
NX_CONSTEXPR SmServiceName ConvertName(sm::ServiceName name) {
static_assert(sizeof(SmServiceName) == sizeof(sm::ServiceName));
SmServiceName ret = {};