|
|
@ -917,17 +917,25 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle |
|
|
*result = system.Kernel().CurrentScheduler()->GetIdleThread()->GetCpuTime(); |
|
|
*result = system.Kernel().CurrentScheduler()->GetIdleThread()->GetCpuTime(); |
|
|
return ResultSuccess; |
|
|
return ResultSuccess; |
|
|
} |
|
|
} |
|
|
case GetInfoType::MesosphereCurrentProcess: { |
|
|
|
|
|
|
|
|
// Verify the input handle is invalid.
|
|
|
R_UNLESS(handle == InvalidHandle, ResultInvalidHandle); |
|
|
R_UNLESS(handle == InvalidHandle, ResultInvalidHandle); |
|
|
|
|
|
|
|
|
|
|
|
// Verify the sub-type is valid.
|
|
|
R_UNLESS(info_sub_id == 0, ResultInvalidCombination); |
|
|
R_UNLESS(info_sub_id == 0, ResultInvalidCombination); |
|
|
|
|
|
|
|
|
KProcess* const current_process = system.Kernel().CurrentProcess(); |
|
|
|
|
|
Handle process_handle{}; |
|
|
|
|
|
R_TRY(current_process->GetHandleTable().Add(&process_handle, current_process)); |
|
|
|
|
|
|
|
|
// Get the handle table.
|
|
|
|
|
|
KProcess* current_process = system.Kernel().CurrentProcess(); |
|
|
|
|
|
KHandleTable& handle_table = current_process->GetHandleTable(); |
|
|
|
|
|
|
|
|
*result = process_handle; |
|
|
|
|
|
|
|
|
// 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; |
|
|
return ResultSuccess; |
|
|
} |
|
|
|
|
|
default: |
|
|
default: |
|
|
LOG_ERROR(Kernel_SVC, "Unimplemented svcGetInfo id=0x{:016X}", info_id); |
|
|
LOG_ERROR(Kernel_SVC, "Unimplemented svcGetInfo id=0x{:016X}", info_id); |
|
|
return ResultInvalidEnumValue; |
|
|
return ResultInvalidEnumValue; |
|
|
|