libstrat: automatically detect+format rawdata structs correctly.

This commit is contained in:
Michael Scire 2018-10-30 06:29:30 -07:00 committed by SciresM
parent 2f7224edce
commit 6ef34d80a0
16 changed files with 147 additions and 76 deletions

View file

@ -22,9 +22,9 @@
#include "ldr_launch_queue.hpp"
#include "ldr_registration.hpp"
Result DebugMonitorService::AddTitleToLaunchQueue(u64 args_size, u64 tid, InPointer<char> args) {
fprintf(stderr, "Add to launch queue: %p, %zX\n", args.pointer, std::min(args_size, args.num_elements));
return LaunchQueue::Add(tid, args.pointer, std::min(args_size, args.num_elements));
Result DebugMonitorService::AddTitleToLaunchQueue(u64 tid, InPointer<char> args, u32 args_size) {
if (args.num_elements < args_size) args_size = args.num_elements;
return LaunchQueue::Add(tid, args.pointer, args_size);
}
void DebugMonitorService::ClearLaunchQueue() {

View file

@ -29,7 +29,7 @@ enum DebugMonitorServiceCmd {
class DebugMonitorService final : public IServiceObject {
private:
/* Actual commands. */
Result AddTitleToLaunchQueue(u64 args_size, u64 tid, InPointer<char> args);
Result AddTitleToLaunchQueue(u64 tid, InPointer<char> args, u32 args_size);
void ClearLaunchQueue();
Result GetNsoInfo(Out<u32> count, OutPointerWithClientSize<Registration::NsoInfo> out, u64 pid);
public:

View file

@ -22,13 +22,13 @@
#include "ldr_content_management.hpp"
#include "ldr_npdm.hpp"
Result ProcessManagerService::CreateProcess(Out<MovedHandle> proc_h, u64 flags, u64 index, CopiedHandle reslimit_h) {
Result ProcessManagerService::CreateProcess(Out<MovedHandle> proc_h, u64 index, u32 flags, CopiedHandle reslimit_h) {
Result rc;
Registration::TidSid tid_sid;
LaunchQueue::LaunchItem *launch_item;
char nca_path[FS_MAX_PATH] = {0};
fprintf(stderr, "CreateProcess(%016lx, %016lx, %08x);\n", flags, index, reslimit_h.handle);
fprintf(stderr, "CreateProcess(%016lx, %08x, %08x);\n", index, flags, reslimit_h.handle);
rc = Registration::GetRegisteredTidSid(index, &tid_sid);
if (R_FAILED(rc)) {
@ -54,7 +54,7 @@ Result ProcessManagerService::CreateProcess(Out<MovedHandle> proc_h, u64 flags,
return rc;
}
Result ProcessManagerService::GetProgramInfo(Registration::TidSid tid_sid, OutPointerWithServerSize<ProcessManagerService::ProgramInfo, 0x1> out_program_info) {
Result ProcessManagerService::GetProgramInfo(OutPointerWithServerSize<ProcessManagerService::ProgramInfo, 0x1> out_program_info, Registration::TidSid tid_sid) {
Result rc;
char nca_path[FS_MAX_PATH] = {0};
/* Zero output. */

View file

@ -45,8 +45,8 @@ class ProcessManagerService final : public IServiceObject {
static_assert(sizeof(ProcessManagerService::ProgramInfo) == 0x400, "Incorrect ProgramInfo definition.");
private:
/* Actual commands. */
Result CreateProcess(Out<MovedHandle> proc_h, u64 flags, u64 index, CopiedHandle reslimit_h);
Result GetProgramInfo(Registration::TidSid tid_sid, OutPointerWithServerSize<ProcessManagerService::ProgramInfo, 0x1> out_program_info);
Result CreateProcess(Out<MovedHandle> proc_h, u64 index, u32 flags, CopiedHandle reslimit_h);
Result GetProgramInfo(OutPointerWithServerSize<ProcessManagerService::ProgramInfo, 0x1> out_program_info, Registration::TidSid tid_sid);
Result RegisterTitle(Out<u64> index, Registration::TidSid tid_sid);
Result UnregisterTitle(u64 index);

View file

@ -20,9 +20,9 @@
#include "ldr_launch_queue.hpp"
#include "ldr_content_management.hpp"
Result ShellService::AddTitleToLaunchQueue(u64 args_size, u64 tid, InPointer<char> args) {
fprintf(stderr, "Add to launch queue: %p, %zX\n", args.pointer, std::min(args_size, args.num_elements));
return LaunchQueue::Add(tid, args.pointer, std::min(args_size, args.num_elements));
Result ShellService::AddTitleToLaunchQueue(u64 tid, InPointer<char> args, u32 args_size) {
if (args.num_elements < args_size) args_size = args.num_elements;
return LaunchQueue::Add(tid, args.pointer, args_size);
}
void ShellService::ClearLaunchQueue() {

View file

@ -28,7 +28,7 @@ enum ShellServiceCmd {
class ShellService final : public IServiceObject {
private:
/* Actual commands. */
Result AddTitleToLaunchQueue(u64 args_size, u64 tid, InPointer<char> args);
Result AddTitleToLaunchQueue(u64 tid, InPointer<char> args, u32 args_size);
void ClearLaunchQueue();
/* Atmosphere commands. */