mirror of
https://github.com/Atmosphere-NX/Atmosphere-libs.git
synced 2025-11-19 18:41:17 +01:00
fatal: add new HashedTraceContext command
This commit is contained in:
parent
01bac58a6b
commit
1854d269bb
@ -24,7 +24,7 @@ namespace ams::fatal {
|
|||||||
enum FatalPolicy : u32 {
|
enum FatalPolicy : u32 {
|
||||||
FatalPolicy_ErrorReportAndErrorScreen = 0,
|
FatalPolicy_ErrorReportAndErrorScreen = 0,
|
||||||
FatalPolicy_ErrorReport = 1,
|
FatalPolicy_ErrorReport = 1,
|
||||||
FatalPolicy_ErrorScreen = 2
|
FatalPolicy_ErrorScreen = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(ATMOSPHERE_ARCH_ARM64)
|
#if defined(ATMOSPHERE_ARCH_ARM64)
|
||||||
@ -470,6 +470,14 @@ namespace ams::fatal {
|
|||||||
#endif
|
#endif
|
||||||
static_assert(util::is_pod<CpuContext>::value && sizeof(CpuContext) == 0x250, "CpuContext definition!");
|
static_assert(util::is_pod<CpuContext>::value && sizeof(CpuContext) == 0x250, "CpuContext definition!");
|
||||||
|
|
||||||
|
struct HashedTraceContext {
|
||||||
|
u8 data[0x20];
|
||||||
|
u32 data_count;
|
||||||
|
};
|
||||||
|
static_assert(util::is_pod<HashedTraceContext>::value);
|
||||||
|
static_assert(sizeof(HashedTraceContext) == 0x24);
|
||||||
|
static_assert(alignof(HashedTraceContext) == 0x4);
|
||||||
|
|
||||||
namespace srv {
|
namespace srv {
|
||||||
|
|
||||||
struct ThrowContext {
|
struct ThrowContext {
|
||||||
@ -480,6 +488,7 @@ namespace ams::fatal {
|
|||||||
char proc_name[0xD];
|
char proc_name[0xD];
|
||||||
bool is_creport;
|
bool is_creport;
|
||||||
CpuContext cpu_ctx;
|
CpuContext cpu_ctx;
|
||||||
|
HashedTraceContext hashed_trace_ctx;
|
||||||
bool generate_error_report;
|
bool generate_error_report;
|
||||||
os::Event *erpt_event;
|
os::Event *erpt_event;
|
||||||
os::Event *battery_event;
|
os::Event *battery_event;
|
||||||
@ -490,7 +499,7 @@ namespace ams::fatal {
|
|||||||
u8 tls_dump[0x100];
|
u8 tls_dump[0x100];
|
||||||
|
|
||||||
ThrowContext(os::Event *erpt, os::Event *bat)
|
ThrowContext(os::Event *erpt, os::Event *bat)
|
||||||
: result(ResultSuccess()), policy(), program_id(), throw_program_id(), proc_name(), is_creport(), cpu_ctx(), generate_error_report(),
|
: result(ResultSuccess()), policy(), program_id(), throw_program_id(), proc_name(), is_creport(), cpu_ctx(), hashed_trace_ctx(), generate_error_report(),
|
||||||
erpt_event(erpt), battery_event(bat),
|
erpt_event(erpt), battery_event(bat),
|
||||||
stack_dump_size(), stack_dump_base(), stack_dump(), tls_address(), tls_dump()
|
stack_dump_size(), stack_dump_base(), stack_dump(), tls_address(), tls_dump()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
#define AMS_FATAL_I_SERVICE_INTERFACE_INFO(C, H) \
|
#define AMS_FATAL_I_SERVICE_INTERFACE_INFO(C, H) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 0, Result, ThrowFatal, (Result error, const sf::ClientProcessId &client_pid), (error, client_pid)) \
|
AMS_SF_METHOD_INFO(C, H, 0, Result, ThrowFatal, (Result error, const sf::ClientProcessId &client_pid), (error, client_pid)) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 1, Result, ThrowFatalWithPolicy, (Result error, const sf::ClientProcessId &client_pid, fatal::FatalPolicy policy), (error, client_pid, policy)) \
|
AMS_SF_METHOD_INFO(C, H, 1, Result, ThrowFatalWithPolicy, (Result error, const sf::ClientProcessId &client_pid, fatal::FatalPolicy policy), (error, client_pid, policy)) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 2, Result, ThrowFatalWithCpuContext, (Result error, const sf::ClientProcessId &client_pid, fatal::FatalPolicy policy, const fatal::CpuContext &cpu_ctx), (error, client_pid, policy, cpu_ctx))
|
AMS_SF_METHOD_INFO(C, H, 2, Result, ThrowFatalWithCpuContext, (Result error, const sf::ClientProcessId &client_pid, fatal::FatalPolicy policy, const fatal::CpuContext &cpu_ctx), (error, client_pid, policy, cpu_ctx)) \
|
||||||
|
AMS_SF_METHOD_INFO(C, H, 3, Result, ThrowFatalWithHashedTraceContext, (Result error, const sf::ClientProcessId &client_pid, ncm::ProgramId program_id, const fatal::HashedTraceContext &htc), (error, client_pid, program_id, htc))
|
||||||
|
|
||||||
AMS_SF_DEFINE_INTERFACE(ams::fatal::impl, IService, AMS_FATAL_I_SERVICE_INTERFACE_INFO, 0x91328766)
|
AMS_SF_DEFINE_INTERFACE(ams::fatal::impl, IService, AMS_FATAL_I_SERVICE_INTERFACE_INFO, 0x91328766)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user