[orbis-kernel] store auth info per process

This commit is contained in:
DH 2023-11-11 17:12:08 +03:00
parent f7e8ce2164
commit 5a7d4dee1e
6 changed files with 59 additions and 29 deletions

View file

@ -0,0 +1,14 @@
#pragma once
#include "orbis-config.hpp"
namespace orbis {
struct AuthInfo {
uint64_t unk0;
uint64_t caps[4];
uint64_t attrs[4];
uint64_t unk[8];
};
static_assert(sizeof(AuthInfo) == 136);
} // namespace orbis

View file

@ -11,6 +11,7 @@ using cpuwhich_t = sint;
using cpulevel_t = sint;
using SceKernelModule = ModuleHandle;
struct AuthInfo;
struct MemoryProtection;
struct ModuleInfo;
struct ModuleInfoEx;
@ -676,7 +677,7 @@ SysResult sys_obs_eport_open(Thread *thread /* TODO */);
SysResult sys_obs_eport_close(Thread *thread /* TODO */);
SysResult sys_is_in_sandbox(Thread *thread /* TODO */);
SysResult sys_dmem_container(Thread *thread, uint id);
SysResult sys_get_authinfo(Thread *thread, pid_t pid, ptr<void> info);
SysResult sys_get_authinfo(Thread *thread, pid_t pid, ptr<AuthInfo> info);
SysResult sys_mname(Thread *thread, uint64_t address, uint64_t length,
ptr<const char[32]> name);
SysResult sys_dynlib_dlopen(Thread *thread /* TODO */);

View file

@ -8,6 +8,7 @@
#include "../thread/types.hpp"
#include "ProcessState.hpp"
#include "orbis/AppInfo.hpp"
#include "orbis/AuthInfo.hpp"
#include "orbis/file.hpp"
#include "orbis/module/Module.hpp"
#include "orbis/utils/IdMap.hpp"
@ -55,6 +56,7 @@ struct Process final {
uint64_t processParamSize = 0;
const ProcessOps *ops = nullptr;
AppInfo appInfo{};
AuthInfo authInfo{};
std::uint64_t nextTlsSlot = 1;
std::uint64_t lastTlsOffset = 0;