|
|
@@ -141,38 +141,6 @@ enum class ResourceLimitValueType {
|
|
|
PeakValue,
|
|
|
};
|
|
|
|
|
|
-ResultVal<s64> RetrieveResourceLimitValue(Core::System& system, Handle resource_limit,
|
|
|
- u32 resource_type, ResourceLimitValueType value_type) {
|
|
|
- std::lock_guard lock{HLE::g_hle_lock};
|
|
|
- const auto type = static_cast<LimitableResource>(resource_type);
|
|
|
- if (!IsValidResourceType(type)) {
|
|
|
- LOG_ERROR(Kernel_SVC, "Invalid resource limit type: '{}'", resource_type);
|
|
|
- return ResultInvalidEnumValue;
|
|
|
- }
|
|
|
-
|
|
|
- const auto* const current_process = system.Kernel().CurrentProcess();
|
|
|
- ASSERT(current_process != nullptr);
|
|
|
-
|
|
|
- auto resource_limit_object =
|
|
|
- current_process->GetHandleTable().GetObject<KResourceLimit>(resource_limit);
|
|
|
- if (resource_limit_object.IsNull()) {
|
|
|
- LOG_ERROR(Kernel_SVC, "Handle to non-existent resource limit instance used. Handle={:08X}",
|
|
|
- resource_limit);
|
|
|
- return ResultInvalidHandle;
|
|
|
- }
|
|
|
-
|
|
|
- switch (value_type) {
|
|
|
- case ResourceLimitValueType::CurrentValue:
|
|
|
- return MakeResult(resource_limit_object->GetCurrentValue(type));
|
|
|
- case ResourceLimitValueType::LimitValue:
|
|
|
- return MakeResult(resource_limit_object->GetLimitValue(type));
|
|
|
- case ResourceLimitValueType::PeakValue:
|
|
|
- return MakeResult(resource_limit_object->GetPeakValue(type));
|
|
|
- default:
|
|
|
- LOG_ERROR(Kernel_SVC, "Invalid resource value_type: '{}'", value_type);
|
|
|
- return ResultInvalidEnumValue;
|
|
|
- }
|
|
|
-}
|
|
|
} // Anonymous namespace
|
|
|
|
|
|
/// Set the process heap to a given Size. It can both extend and shrink the heap.
|