mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-22 13:02:38 +02:00
fatal: Use new IPC interface
This commit is contained in:
parent
6ad0042147
commit
51db782e7a
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user