4 changed files with 102 additions and 1 deletions
-
1src/core/CMakeLists.txt
-
64src/core/hle/kernel/k_event_info.h
-
2src/core/hle/kernel/svc.cpp
-
36src/core/hle/kernel/svc_types.h
@ -0,0 +1,64 @@ |
|||||
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project |
||||
|
// SPDX-License-Identifier: GPL-2.0-or-later |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <array> |
||||
|
|
||||
|
#include <boost/intrusive/list.hpp> |
||||
|
|
||||
|
#include "core/hle/kernel/slab_helpers.h" |
||||
|
#include "core/hle/kernel/svc_types.h" |
||||
|
|
||||
|
namespace Kernel { |
||||
|
|
||||
|
class KEventInfo : public KSlabAllocated<KEventInfo>, public boost::intrusive::list_base_hook<> { |
||||
|
public: |
||||
|
struct InfoCreateThread { |
||||
|
u32 thread_id{}; |
||||
|
uintptr_t tls_address{}; |
||||
|
}; |
||||
|
|
||||
|
struct InfoExitProcess { |
||||
|
Svc::ProcessExitReason reason{}; |
||||
|
}; |
||||
|
|
||||
|
struct InfoExitThread { |
||||
|
Svc::ThreadExitReason reason{}; |
||||
|
}; |
||||
|
|
||||
|
struct InfoException { |
||||
|
Svc::DebugException exception_type{}; |
||||
|
s32 exception_data_count{}; |
||||
|
uintptr_t exception_address{}; |
||||
|
std::array<uintptr_t, 4> exception_data{}; |
||||
|
}; |
||||
|
|
||||
|
struct InfoSystemCall { |
||||
|
s64 tick{}; |
||||
|
s32 id{}; |
||||
|
}; |
||||
|
|
||||
|
public: |
||||
|
KEventInfo() = default; |
||||
|
~KEventInfo() = default; |
||||
|
|
||||
|
public: |
||||
|
Svc::DebugEvent event{}; |
||||
|
u32 thread_id{}; |
||||
|
u32 flags{}; |
||||
|
bool is_attached{}; |
||||
|
bool continue_flag{}; |
||||
|
bool ignore_continue{}; |
||||
|
bool close_once{}; |
||||
|
union { |
||||
|
InfoCreateThread create_thread; |
||||
|
InfoExitProcess exit_process; |
||||
|
InfoExitThread exit_thread; |
||||
|
InfoException exception; |
||||
|
InfoSystemCall system_call; |
||||
|
} info{}; |
||||
|
KThread* debug_thread{}; |
||||
|
}; |
||||
|
|
||||
|
} // namespace Kernel |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue