Integrate new result macros. (#1780)

* result: try out some experimental shenanigans

* result: sketch out some more shenanigans

* result: see what it looks like to convert kernel to use result conds instead of guards

* make rest of kernel use experimental new macro-ing
This commit is contained in:
SciresM 2022-02-14 14:45:32 -08:00 committed by GitHub
parent 375ba615be
commit 96f95b9f95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
109 changed files with 1355 additions and 1380 deletions

View file

@ -65,7 +65,7 @@ namespace ams::kern::svc {
*out_process_id = d->GetProcessUnsafe()->GetProcessId();
}
return ResultSuccess();
R_SUCCEED();
}
Result GetProcessList(int32_t *out_num_processes, KUserPointer<uint64_t *> out_process_ids, int32_t max_out_count) {
@ -78,7 +78,7 @@ namespace ams::kern::svc {
}
/* Get the process list. */
return KProcess::GetProcessList(out_num_processes, out_process_ids, max_out_count);
R_RETURN(KProcess::GetProcessList(out_num_processes, out_process_ids, max_out_count));
}
Result CreateProcess(ams::svc::Handle *out, const ams::svc::CreateProcessParameter &params, KUserPointer<const uint32_t *> user_caps, int32_t num_caps) {
@ -135,7 +135,7 @@ namespace ams::kern::svc {
}
break;
default:
return svc::ResultInvalidEnumValue();
R_THROW(svc::ResultInvalidEnumValue());
}
/* Validate the pool partition. */
@ -147,7 +147,7 @@ namespace ams::kern::svc {
case ams::svc::CreateProcessFlag_PoolPartitionSystemNonSecure:
break;
default:
return svc::ResultInvalidEnumValue();
R_THROW(svc::ResultInvalidEnumValue());
}
}
@ -243,7 +243,7 @@ namespace ams::kern::svc {
/* Add the process to the handle table. */
R_TRY(handle_table.Add(out, process));
return ResultSuccess();
R_SUCCEED();
}
template<typename T>
@ -254,7 +254,7 @@ namespace ams::kern::svc {
/* Invoke the implementation. */
if constexpr (std::same_as<T, ams::svc::CreateProcessParameter>) {
return CreateProcess(out, params, user_caps, num_caps);
R_RETURN(CreateProcess(out, params, user_caps, num_caps));
} else {
/* Convert the parameters. */
ams::svc::CreateProcessParameter converted_params;
@ -270,7 +270,7 @@ namespace ams::kern::svc {
converted_params.system_resource_num_pages = params.system_resource_num_pages;
/* Invoke. */
return CreateProcess(out, converted_params, user_caps, num_caps);
R_RETURN(CreateProcess(out, converted_params, user_caps, num_caps));
}
}
@ -294,7 +294,7 @@ namespace ams::kern::svc {
process->SetIdealCoreId(core_id);
/* Run the process. */
return process->Run(priority, static_cast<size_t>(main_thread_stack_size));
R_RETURN(process->Run(priority, static_cast<size_t>(main_thread_stack_size)));
}
Result TerminateProcess(ams::svc::Handle process_handle) {
@ -316,7 +316,7 @@ namespace ams::kern::svc {
ExitProcess();
}
return ResultSuccess();
R_SUCCEED();
}
Result GetProcessInfo(int64_t *out, ams::svc::Handle process_handle, ams::svc::ProcessInfoType info_type) {
@ -352,10 +352,10 @@ namespace ams::kern::svc {
}
break;
default:
return svc::ResultInvalidEnumValue();
R_THROW(svc::ResultInvalidEnumValue());
}
return ResultSuccess();
R_SUCCEED();
}
}
@ -367,27 +367,27 @@ namespace ams::kern::svc {
}
Result GetProcessId64(uint64_t *out_process_id, ams::svc::Handle process_handle) {
return GetProcessId(out_process_id, process_handle);
R_RETURN(GetProcessId(out_process_id, process_handle));
}
Result GetProcessList64(int32_t *out_num_processes, KUserPointer<uint64_t *> out_process_ids, int32_t max_out_count) {
return GetProcessList(out_num_processes, out_process_ids, max_out_count);
R_RETURN(GetProcessList(out_num_processes, out_process_ids, max_out_count));
}
Result CreateProcess64(ams::svc::Handle *out_handle, KUserPointer<const ams::svc::lp64::CreateProcessParameter *> parameters, KUserPointer<const uint32_t *> caps, int32_t num_caps) {
return CreateProcess(out_handle, parameters, caps, num_caps);
R_RETURN(CreateProcess(out_handle, parameters, caps, num_caps));
}
Result StartProcess64(ams::svc::Handle process_handle, int32_t priority, int32_t core_id, uint64_t main_thread_stack_size) {
return StartProcess(process_handle, priority, core_id, main_thread_stack_size);
R_RETURN(StartProcess(process_handle, priority, core_id, main_thread_stack_size));
}
Result TerminateProcess64(ams::svc::Handle process_handle) {
return TerminateProcess(process_handle);
R_RETURN(TerminateProcess(process_handle));
}
Result GetProcessInfo64(int64_t *out_info, ams::svc::Handle process_handle, ams::svc::ProcessInfoType info_type) {
return GetProcessInfo(out_info, process_handle, info_type);
R_RETURN(GetProcessInfo(out_info, process_handle, info_type));
}
/* ============================= 64From32 ABI ============================= */
@ -397,27 +397,27 @@ namespace ams::kern::svc {
}
Result GetProcessId64From32(uint64_t *out_process_id, ams::svc::Handle process_handle) {
return GetProcessId(out_process_id, process_handle);
R_RETURN(GetProcessId(out_process_id, process_handle));
}
Result GetProcessList64From32(int32_t *out_num_processes, KUserPointer<uint64_t *> out_process_ids, int32_t max_out_count) {
return GetProcessList(out_num_processes, out_process_ids, max_out_count);
R_RETURN(GetProcessList(out_num_processes, out_process_ids, max_out_count));
}
Result CreateProcess64From32(ams::svc::Handle *out_handle, KUserPointer<const ams::svc::ilp32::CreateProcessParameter *> parameters, KUserPointer<const uint32_t *> caps, int32_t num_caps) {
return CreateProcess(out_handle, parameters, caps, num_caps);
R_RETURN(CreateProcess(out_handle, parameters, caps, num_caps));
}
Result StartProcess64From32(ams::svc::Handle process_handle, int32_t priority, int32_t core_id, uint64_t main_thread_stack_size) {
return StartProcess(process_handle, priority, core_id, main_thread_stack_size);
R_RETURN(StartProcess(process_handle, priority, core_id, main_thread_stack_size));
}
Result TerminateProcess64From32(ams::svc::Handle process_handle) {
return TerminateProcess(process_handle);
R_RETURN(TerminateProcess(process_handle));
}
Result GetProcessInfo64From32(int64_t *out_info, ams::svc::Handle process_handle, ams::svc::ProcessInfoType info_type) {
return GetProcessInfo(out_info, process_handle, info_type);
R_RETURN(GetProcessInfo(out_info, process_handle, info_type));
}
}