1
0
Fork 0
mirror of https://github.com/Atmosphere-NX/Atmosphere.git synced 2024-11-10 14:11:43 +00:00
Atmosphere/stratosphere/pm/source/pm_registration.hpp

47 lines
1.5 KiB
C++

#pragma once
#include <switch.h>
#include <stratosphere.hpp>
class Registration {
public:
struct TidSid {
u64 title_id;
FsStorageId storage_id;
};
struct Process {
Handle handle;
u64 pid;
u64 ldr_queue_index;
Registration::TidSid tid_sid;
ProcessState state;
u32 flags;
};
struct ProcessLaunchState {
TidSid tid_sid;
u64 launch_flags;
u64* out_pid;
Result result;
};
static void InitializeSystemResources();
static IWaitable *GetProcessLaunchStartEvent();
static Result ProcessLaunchStartCallback(Handle *handles, size_t num_handles, u64 timeout);
static IWaitable *GetProcessList();
static void HandleSignaledProcess(Process *process);
static void FinalizeExitedProcess(Process *process);
static void AddProcessToList(Process *process);
static void RemoveProcessFromList(u64 pid);
static void SetProcessState(u64 pid, ProcessState new_state);
static void HandleProcessLaunch();
static void SignalFinishLaunchProcess();
static Result LaunchProcess(u64 title_id, FsStorageId storage_id, u64 launch_flags, u64 *out_pid);
static Result LaunchProcessByTidSid(TidSid tid_sid, u64 launch_flags, u64 *out_pid);
static bool HasApplicationProcess();
static void EnsureApplicationResourcesAvailable();
};