Merge pull request #8504 from comex/mesosphere-current-process
Support `InfoType_MesosphereCurrentProcess`
This commit is contained in:
		| @@ -691,6 +691,9 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle | ||||
|         // 6.0.0+ | ||||
|         TotalPhysicalMemoryAvailableWithoutSystemResource = 21, | ||||
|         TotalPhysicalMemoryUsedWithoutSystemResource = 22, | ||||
|  | ||||
|         // Homebrew only | ||||
|         MesosphereCurrentProcess = 65001, | ||||
|     }; | ||||
|  | ||||
|     const auto info_id_type = static_cast<GetInfoType>(info_id); | ||||
| @@ -913,6 +916,27 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle | ||||
|         *result = system.Kernel().CurrentScheduler()->GetIdleThread()->GetCpuTime(); | ||||
|         return ResultSuccess; | ||||
|     } | ||||
|     case GetInfoType::MesosphereCurrentProcess: { | ||||
|         // Verify the input handle is invalid. | ||||
|         R_UNLESS(handle == InvalidHandle, ResultInvalidHandle); | ||||
|  | ||||
|         // Verify the sub-type is valid. | ||||
|         R_UNLESS(info_sub_id == 0, ResultInvalidCombination); | ||||
|  | ||||
|         // Get the handle table. | ||||
|         KProcess* current_process = system.Kernel().CurrentProcess(); | ||||
|         KHandleTable& handle_table = current_process->GetHandleTable(); | ||||
|  | ||||
|         // Get a new handle for the current process. | ||||
|         Handle tmp; | ||||
|         R_TRY(handle_table.Add(&tmp, current_process)); | ||||
|  | ||||
|         // Set the output. | ||||
|         *result = tmp; | ||||
|  | ||||
|         // We succeeded. | ||||
|         return ResultSuccess; | ||||
|     } | ||||
|     default: | ||||
|         LOG_ERROR(Kernel_SVC, "Unimplemented svcGetInfo id=0x{:016X}", info_id); | ||||
|         return ResultInvalidEnumValue; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user