|
|
|
@ -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: |
|
|
|
|