fatal: Use new IPC interface

This commit is contained in:
fincs 2019-09-19 04:23:00 +02:00
parent 6ad0042147
commit 51db782e7a
No known key found for this signature in database
GPG Key ID: 62C7609ADA219C60

View File

@ -1,7 +1,6 @@
// Copyright 2017 plutoo // Copyright 2017 plutoo
#include "types.h" #include "types.h"
#include "result.h" #include "result.h"
#include "kernel/ipc.h"
#include "kernel/detect.h" #include "kernel/detect.h"
#include "kernel/svc.h" #include "kernel/svc.h"
#include "services/fatal.h" #include "services/fatal.h"
@ -26,30 +25,19 @@ static void _fatalImpl(u32 cmd_id, Result err, FatalType type, FatalContext *ctx
rc = smGetServiceOriginal(&srv, smEncodeName("fatal:u")); rc = smGetServiceOriginal(&srv, smEncodeName("fatal:u"));
if (R_SUCCEEDED(rc)) { if (R_SUCCEEDED(rc)) {
IpcCommand c; const struct {
ipcInitialize(&c);
ipcSendPid(&c);
if (ctx != NULL) {
ipcAddSendBuffer(&c, ctx, sizeof(*ctx), BufferType_Normal);
}
struct {
u64 magic;
u64 cmd_id;
u32 result; u32 result;
u32 type; u32 type;
u64 pid_placeholder; u64 pid_placeholder;
} *raw; } in = { err, type };
raw = ipcPrepareHeader(&c, sizeof(*raw)); Service s;
serviceCreate(&s, srv);
raw->magic = SFCI_MAGIC; serviceDispatchIn(&s, cmd_id, in,
raw->cmd_id = cmd_id; .buffer_attrs = { ctx ? (SfBufferAttr_In | SfBufferAttr_HipcMapAlias) : 0U },
raw->result = err; .buffers = { { ctx, sizeof(*ctx) } },
raw->type = type; .in_send_pid = true,
raw->pid_placeholder = 0; // Overwritten by fatal with PID descriptor. );
ipcDispatch(srv);
} }
} }