pgl: update to use tipc (untested)
This commit is contained in:
@@ -20,6 +20,10 @@
|
||||
|
||||
namespace ams::pgl::srv {
|
||||
|
||||
void Initialize();
|
||||
void InitializeHeap();
|
||||
void *Allocate(size_t size);
|
||||
void Deallocate(void *p, size_t size);
|
||||
|
||||
void StartServer();
|
||||
|
||||
}
|
||||
|
||||
@@ -17,19 +17,39 @@
|
||||
#include <vapours.hpp>
|
||||
#include <stratosphere/pgl/pgl_types.hpp>
|
||||
#include <stratosphere/pgl/sf/pgl_sf_i_shell_interface.hpp>
|
||||
#include <stratosphere/pgl/tipc/pgl_tipc_i_shell_interface.hpp>
|
||||
|
||||
namespace ams::pgl::srv {
|
||||
|
||||
class ShellInterface {
|
||||
NON_COPYABLE(ShellInterface);
|
||||
NON_MOVEABLE(ShellInterface);
|
||||
class ShellInterfaceCommon {
|
||||
NON_COPYABLE(ShellInterfaceCommon);
|
||||
NON_MOVEABLE(ShellInterfaceCommon);
|
||||
public:
|
||||
constexpr ShellInterfaceCommon() = default;
|
||||
public:
|
||||
Result LaunchProgramImpl(os::ProcessId *out, const ncm::ProgramLocation &loc, u32 pm_flags, u8 pgl_flags);
|
||||
Result TerminateProcessImpl(os::ProcessId process_id);
|
||||
Result LaunchProgramFromHostImpl(os::ProcessId *out, const void *content_path, size_t content_path_size, u32 pm_flags);
|
||||
Result GetHostContentMetaInfoImpl(pgl::ContentMetaInfo *out, const void *content_path, size_t content_path_size);
|
||||
Result GetApplicationProcessIdImpl(os::ProcessId *out);
|
||||
Result BoostSystemMemoryResourceLimitImpl(u64 size);
|
||||
Result IsProcessTrackedImpl(bool *out, os::ProcessId process_id);
|
||||
Result EnableApplicationCrashReportImpl(bool enabled);
|
||||
Result IsApplicationCrashReportEnabledImpl(bool *out);
|
||||
Result EnableApplicationAllThreadDumpOnCrashImpl(bool enabled);
|
||||
Result TriggerApplicationSnapShotDumperImpl(SnapShotDumpType dump_type, const void *arg, size_t arg_size);
|
||||
};
|
||||
|
||||
class ShellInterfaceCmif : public ShellInterfaceCommon {
|
||||
NON_COPYABLE(ShellInterfaceCmif);
|
||||
NON_MOVEABLE(ShellInterfaceCmif);
|
||||
private:
|
||||
using Allocator = ams::sf::ExpHeapAllocator;
|
||||
using ObjectFactory = ams::sf::ObjectFactory<ams::sf::ExpHeapAllocator::Policy>;
|
||||
private:
|
||||
Allocator *m_allocator;
|
||||
public:
|
||||
constexpr ShellInterface(Allocator *a) : m_allocator(a) { /* ... */ }
|
||||
constexpr ShellInterfaceCmif(Allocator *a) : ShellInterfaceCommon(), m_allocator(a) { /* ... */ }
|
||||
public:
|
||||
/* Interface commands. */
|
||||
Result LaunchProgram(ams::sf::Out<os::ProcessId> out, const ncm::ProgramLocation &loc, u32 pm_flags, u8 pgl_flags);
|
||||
@@ -47,6 +67,27 @@ namespace ams::pgl::srv {
|
||||
Result GetShellEventObserver(ams::sf::Out<ams::sf::SharedPointer<pgl::sf::IEventObserver>> out);
|
||||
Result Command21NotImplemented(ams::sf::Out<u64> out, u32 in, const ams::sf::InBuffer &buf1, const ams::sf::InBuffer &buf2);
|
||||
};
|
||||
static_assert(pgl::sf::IsIShellInterface<ShellInterface>);
|
||||
static_assert(pgl::sf::IsIShellInterface<ShellInterfaceCmif>);
|
||||
|
||||
class ShellInterfaceTipc : public ShellInterfaceCommon {
|
||||
NON_COPYABLE(ShellInterfaceTipc);
|
||||
NON_MOVEABLE(ShellInterfaceTipc);
|
||||
public:
|
||||
constexpr ShellInterfaceTipc() : ShellInterfaceCommon() { /* ... */ }
|
||||
public:
|
||||
/* Interface commands. */
|
||||
Result LaunchProgram(ams::tipc::Out<os::ProcessId> out, const ncm::ProgramLocation loc, u32 pm_flags, u8 pgl_flags);
|
||||
Result TerminateProcess(os::ProcessId process_id);
|
||||
Result LaunchProgramFromHost(ams::tipc::Out<os::ProcessId> out, const ams::tipc::InBuffer content_path, u32 pm_flags);
|
||||
Result GetHostContentMetaInfo(ams::tipc::Out<pgl::ContentMetaInfo> out, const ams::tipc::InBuffer content_path);
|
||||
Result GetApplicationProcessId(ams::tipc::Out<os::ProcessId> out);
|
||||
Result BoostSystemMemoryResourceLimit(u64 size);
|
||||
Result IsProcessTracked(ams::tipc::Out<bool> out, os::ProcessId process_id);
|
||||
Result EnableApplicationCrashReport(bool enabled);
|
||||
Result IsApplicationCrashReportEnabled(ams::tipc::Out<bool> out);
|
||||
Result EnableApplicationAllThreadDumpOnCrash(bool enabled);
|
||||
Result GetShellEventObserver(ams::tipc::OutMoveHandle out);
|
||||
};
|
||||
static_assert(pgl::tipc::IsIShellInterface<ShellInterfaceTipc>);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user