hle: Eliminate need to specify command headers for IPC. (#6678)

This commit is contained in:
Steveice10 2023-07-14 17:32:59 -07:00 committed by GitHub
parent 0bedb28bdc
commit e043caac27
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
96 changed files with 2691 additions and 2707 deletions

View file

@ -12,7 +12,7 @@ SERIALIZE_EXPORT_IMPL(Service::NDM::NDM_U)
namespace Service::NDM {
void NDM_U::EnterExclusiveState(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x01, 1, 2);
IPC::RequestParser rp(ctx);
exclusive_state = rp.PopEnum<ExclusiveState>();
rp.PopPID();
@ -22,7 +22,7 @@ void NDM_U::EnterExclusiveState(Kernel::HLERequestContext& ctx) {
}
void NDM_U::LeaveExclusiveState(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x02, 0, 2);
IPC::RequestParser rp(ctx);
rp.PopPID();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -31,7 +31,7 @@ void NDM_U::LeaveExclusiveState(Kernel::HLERequestContext& ctx) {
}
void NDM_U::QueryExclusiveMode(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x03, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
rb.PushEnum(exclusive_state);
@ -39,7 +39,7 @@ void NDM_U::QueryExclusiveMode(Kernel::HLERequestContext& ctx) {
}
void NDM_U::LockState(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x04, 0, 2);
IPC::RequestParser rp(ctx);
rp.PopPID();
daemon_lock_enabled = true;
@ -49,7 +49,7 @@ void NDM_U::LockState(Kernel::HLERequestContext& ctx) {
}
void NDM_U::UnlockState(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x05, 0, 2);
IPC::RequestParser rp(ctx);
rp.PopPID();
daemon_lock_enabled = false;
@ -59,7 +59,7 @@ void NDM_U::UnlockState(Kernel::HLERequestContext& ctx) {
}
void NDM_U::SuspendDaemons(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x06, 1, 0);
IPC::RequestParser rp(ctx);
u32 bit_mask = rp.Pop<u32>() & 0xF;
daemon_bit_mask =
static_cast<DaemonMask>(static_cast<u32>(default_daemon_bit_mask) & ~bit_mask);
@ -75,7 +75,7 @@ void NDM_U::SuspendDaemons(Kernel::HLERequestContext& ctx) {
}
void NDM_U::ResumeDaemons(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x07, 1, 0);
IPC::RequestParser rp(ctx);
u32 bit_mask = rp.Pop<u32>() & 0xF;
daemon_bit_mask = static_cast<DaemonMask>(static_cast<u32>(daemon_bit_mask) & ~bit_mask);
for (std::size_t index = 0; index < daemon_status.size(); ++index) {
@ -90,7 +90,7 @@ void NDM_U::ResumeDaemons(Kernel::HLERequestContext& ctx) {
}
void NDM_U::SuspendScheduler(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x08, 1, 0);
IPC::RequestParser rp(ctx);
bool perform_in_background = rp.Pop<bool>();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -99,14 +99,14 @@ void NDM_U::SuspendScheduler(Kernel::HLERequestContext& ctx) {
}
void NDM_U::ResumeScheduler(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x09, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
LOG_WARNING(Service_NDM, "(STUBBED)");
}
void NDM_U::QueryStatus(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0D, 1, 0);
IPC::RequestParser rp(ctx);
u8 daemon = rp.Pop<u8>();
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
@ -116,7 +116,7 @@ void NDM_U::QueryStatus(Kernel::HLERequestContext& ctx) {
}
void NDM_U::GetDaemonDisableCount(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0E, 1, 0);
IPC::RequestParser rp(ctx);
u8 daemon = rp.Pop<u8>();
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
@ -127,7 +127,7 @@ void NDM_U::GetDaemonDisableCount(Kernel::HLERequestContext& ctx) {
}
void NDM_U::GetSchedulerDisableCount(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x0F, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
rb.Push(RESULT_SUCCESS);
@ -137,7 +137,7 @@ void NDM_U::GetSchedulerDisableCount(Kernel::HLERequestContext& ctx) {
}
void NDM_U::SetScanInterval(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x10, 1, 0);
IPC::RequestParser rp(ctx);
scan_interval = rp.Pop<u32>();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -146,7 +146,7 @@ void NDM_U::SetScanInterval(Kernel::HLERequestContext& ctx) {
}
void NDM_U::GetScanInterval(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x11, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
rb.Push(scan_interval);
@ -154,7 +154,7 @@ void NDM_U::GetScanInterval(Kernel::HLERequestContext& ctx) {
}
void NDM_U::SetRetryInterval(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x12, 1, 0);
IPC::RequestParser rp(ctx);
retry_interval = rp.Pop<u32>();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -163,7 +163,7 @@ void NDM_U::SetRetryInterval(Kernel::HLERequestContext& ctx) {
}
void NDM_U::GetRetryInterval(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x13, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
rb.Push(retry_interval);
@ -171,7 +171,7 @@ void NDM_U::GetRetryInterval(Kernel::HLERequestContext& ctx) {
}
void NDM_U::OverrideDefaultDaemons(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x14, 1, 0);
IPC::RequestParser rp(ctx);
u32 bit_mask = rp.Pop<u32>() & 0xF;
default_daemon_bit_mask = static_cast<DaemonMask>(bit_mask);
daemon_bit_mask = default_daemon_bit_mask;
@ -187,7 +187,7 @@ void NDM_U::OverrideDefaultDaemons(Kernel::HLERequestContext& ctx) {
}
void NDM_U::ResetDefaultDaemons(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x15, 0, 0);
IPC::RequestParser rp(ctx);
default_daemon_bit_mask = DaemonMask::Default;
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -196,7 +196,7 @@ void NDM_U::ResetDefaultDaemons(Kernel::HLERequestContext& ctx) {
}
void NDM_U::GetDefaultDaemons(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x16, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
rb.Push(RESULT_SUCCESS);
rb.PushEnum(default_daemon_bit_mask);
@ -204,7 +204,7 @@ void NDM_U::GetDefaultDaemons(Kernel::HLERequestContext& ctx) {
}
void NDM_U::ClearHalfAwakeMacFilter(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp(ctx, 0x17, 0, 0);
IPC::RequestParser rp(ctx);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
LOG_WARNING(Service_NDM, "(STUBBED)");
@ -213,29 +213,29 @@ void NDM_U::ClearHalfAwakeMacFilter(Kernel::HLERequestContext& ctx) {
NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) {
static const FunctionInfo functions[] = {
// clang-format off
{IPC::MakeHeader(0x0001, 1, 2), &NDM_U::EnterExclusiveState, "EnterExclusiveState"},
{IPC::MakeHeader(0x0002, 0, 2), &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"},
{IPC::MakeHeader(0x0003, 0, 0), &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"},
{IPC::MakeHeader(0x0004, 0, 2), &NDM_U::LockState, "LockState"},
{IPC::MakeHeader(0x0005, 0, 2), &NDM_U::UnlockState, "UnlockState"},
{IPC::MakeHeader(0x0006, 1, 0), &NDM_U::SuspendDaemons, "SuspendDaemons"},
{IPC::MakeHeader(0x0007, 1, 0), &NDM_U::ResumeDaemons, "ResumeDaemons"},
{IPC::MakeHeader(0x0008, 1, 0), &NDM_U::SuspendScheduler, "SuspendScheduler"},
{IPC::MakeHeader(0x0009, 0, 0), &NDM_U::ResumeScheduler, "ResumeScheduler"},
{IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetCurrentState"},
{IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetTargetState"},
{IPC::MakeHeader(0x000C, 0, 0), nullptr, "<Stubbed>"},
{IPC::MakeHeader(0x000D, 1, 0), &NDM_U::QueryStatus, "QueryStatus"},
{IPC::MakeHeader(0x000E, 1, 0), &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"},
{IPC::MakeHeader(0x000F, 0, 0), &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"},
{IPC::MakeHeader(0x0010, 1, 0), &NDM_U::SetScanInterval, "SetScanInterval"},
{IPC::MakeHeader(0x0011, 0, 0), &NDM_U::GetScanInterval, "GetScanInterval"},
{IPC::MakeHeader(0x0012, 1, 0), &NDM_U::SetRetryInterval, "SetRetryInterval"},
{IPC::MakeHeader(0x0013, 0, 0), &NDM_U::GetRetryInterval, "GetRetryInterval"},
{IPC::MakeHeader(0x0014, 1, 0), &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"},
{IPC::MakeHeader(0x0015, 0, 0), &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"},
{IPC::MakeHeader(0x0016, 0, 0), &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"},
{IPC::MakeHeader(0x0017, 0, 0), &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"},
{0x0001, &NDM_U::EnterExclusiveState, "EnterExclusiveState"},
{0x0002, &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"},
{0x0003, &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"},
{0x0004, &NDM_U::LockState, "LockState"},
{0x0005, &NDM_U::UnlockState, "UnlockState"},
{0x0006, &NDM_U::SuspendDaemons, "SuspendDaemons"},
{0x0007, &NDM_U::ResumeDaemons, "ResumeDaemons"},
{0x0008, &NDM_U::SuspendScheduler, "SuspendScheduler"},
{0x0009, &NDM_U::ResumeScheduler, "ResumeScheduler"},
{0x000A, nullptr, "GetCurrentState"},
{0x000B, nullptr, "GetTargetState"},
{0x000C, nullptr, "<Stubbed>"},
{0x000D, &NDM_U::QueryStatus, "QueryStatus"},
{0x000E, &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"},
{0x000F, &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"},
{0x0010, &NDM_U::SetScanInterval, "SetScanInterval"},
{0x0011, &NDM_U::GetScanInterval, "GetScanInterval"},
{0x0012, &NDM_U::SetRetryInterval, "SetRetryInterval"},
{0x0013, &NDM_U::GetRetryInterval, "GetRetryInterval"},
{0x0014, &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"},
{0x0015, &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"},
{0x0016, &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"},
{0x0017, &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"},
// clang-format on
};
RegisterHandlers(functions);