|
|
|
@ -55,15 +55,29 @@ public:
|
|
|
|
|
static const HandleType HANDLE_TYPE = HandleType::Process;
|
|
|
|
|
HandleType GetHandleType() const override { return HANDLE_TYPE; }
|
|
|
|
|
|
|
|
|
|
std::string name; ///< Name of the process
|
|
|
|
|
/// Name of the process
|
|
|
|
|
std::string name;
|
|
|
|
|
/// Title ID corresponding to the process
|
|
|
|
|
u64 program_id;
|
|
|
|
|
|
|
|
|
|
/// The process may only call SVCs which have the corresponding bit set.
|
|
|
|
|
std::bitset<0x80> svc_access_mask;
|
|
|
|
|
/// Maximum size of the handle table for the process.
|
|
|
|
|
unsigned int handle_table_size = 0x200;
|
|
|
|
|
boost::container::static_vector<StaticAddressMapping, 8> static_address_mappings; // TODO: Determine a good upper limit
|
|
|
|
|
/// Special memory ranges mapped into this processes address space. This is used to give
|
|
|
|
|
/// processes access to specific I/O regions and device memory.
|
|
|
|
|
boost::container::static_vector<StaticAddressMapping, 8> static_address_mappings;
|
|
|
|
|
ProcessFlags flags;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Parses a list of kernel capability descriptors (as found in the ExHeader) and applies them
|
|
|
|
|
* to this process.
|
|
|
|
|
*/
|
|
|
|
|
void ParseKernelCaps(const u32* kernel_caps, size_t len);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Applies address space changes and launches the process main thread.
|
|
|
|
|
*/
|
|
|
|
|
void Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|