kern: Svc(Legacy)ContinueDebugEvent

This commit is contained in:
Michael Scire 2020-07-30 20:49:58 -07:00 committed by SciresM
parent 3289b45408
commit b143f1e05f
9 changed files with 200 additions and 6 deletions

View file

@ -36,9 +36,10 @@ namespace ams::kern {
virtual ~KDebugBase() { /* ... */ }
public:
void Initialize();
Result Attach(KProcess *process);
KScopedAutoObject<KProcess> GetProcess();
Result ContinueDebug(const u32 flags, const u64 *thread_ids, size_t num_thread_ids);
Result QueryMemoryInfo(ams::svc::MemoryInfo *out_memory_info, ams::svc::PageInfo *out_page_info, KProcessAddress address);
Result ReadMemory(KProcessAddress buffer, KProcessAddress address, size_t size);
@ -49,6 +50,8 @@ namespace ams::kern {
Result GetDebugEventInfo(ams::svc::lp64::DebugEventInfo *out);
Result GetDebugEventInfo(ams::svc::ilp32::DebugEventInfo *out);
KScopedAutoObject<KProcess> GetProcess();
/* TODO: This is a placeholder definition. */
private:
void PushDebugEvent(ams::svc::DebugEvent event, uintptr_t param0 = 0, uintptr_t param1 = 0, uintptr_t param2 = 0, uintptr_t param3 = 0, uintptr_t param4 = 0);

View file

@ -194,6 +194,7 @@ namespace ams::kern {
void ClearDebugObject(KProcess::State state);
KEventInfo *GetJitDebugInfo();
void ClearJitDebugInfo();
bool EnterUserException();
bool LeaveUserException();
@ -296,6 +297,18 @@ namespace ams::kern {
Result Reset();
void SetDebugBreak() {
if (this->state == State_RunningAttached) {
this->ChangeState(State_DebugBreak);
}
}
void SetAttached() {
if (this->state == State_DebugBreak) {
this->ChangeState(State_RunningAttached);
}
}
Result SetActivity(ams::svc::ProcessActivity activity);
void PinCurrentThread();

View file

@ -402,6 +402,16 @@ namespace ams::kern {
return this->wait_result;
}
constexpr void SetDebugExceptionResult(Result result) {
MESOSPHERE_ASSERT_THIS();
this->debug_exception_result = result;
}
constexpr Result GetDebugExceptionResult() const {
MESOSPHERE_ASSERT_THIS();
return this->debug_exception_result;
}
void WaitCancel();
bool IsWaitCancelled() const { return this->wait_cancelled; }

View file

@ -24,6 +24,8 @@ namespace ams::kern::svc {
/* 33 */ using ::ams::svc::ResultNotImplemented;
/* 54 */ using ::ams::svc::ResultStopProcessingException;
/* 57 */ using ::ams::svc::ResultNoSynchronizationObject;
/* 59 */ using ::ams::svc::ResultTerminationRequested;