mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-27 22:06:27 -05:00
d09e98f566
This doesn't really provide any benefit to the resource limit interface. There's no way for callers to any of the service functions for resource limits to provide a custom name, so all created instances of resource limits other than the system resource limit would have a name of "Unknown". The system resource limit itself is already trivially identifiable from its limit values, so there's no real need to take up space in the object to identify one object meaningfully out of N total objects.
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
// Copyright 2015 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#include "core/hle/kernel/errors.h"
|
|
#include "core/hle/kernel/resource_limit.h"
|
|
#include "core/hle/result.h"
|
|
|
|
namespace Kernel {
|
|
namespace {
|
|
constexpr std::size_t ResourceTypeToIndex(ResourceType type) {
|
|
return static_cast<std::size_t>(type);
|
|
}
|
|
} // Anonymous namespace
|
|
|
|
ResourceLimit::ResourceLimit(KernelCore& kernel) : Object{kernel} {}
|
|
ResourceLimit::~ResourceLimit() = default;
|
|
|
|
SharedPtr<ResourceLimit> ResourceLimit::Create(KernelCore& kernel) {
|
|
return new ResourceLimit(kernel);
|
|
}
|
|
|
|
s64 ResourceLimit::GetCurrentResourceValue(ResourceType resource) const {
|
|
return values.at(ResourceTypeToIndex(resource));
|
|
}
|
|
|
|
s64 ResourceLimit::GetMaxResourceValue(ResourceType resource) const {
|
|
return limits.at(ResourceTypeToIndex(resource));
|
|
}
|
|
|
|
ResultCode ResourceLimit::SetLimitValue(ResourceType resource, s64 value) {
|
|
const auto index = ResourceTypeToIndex(resource);
|
|
|
|
if (value < values[index]) {
|
|
return ERR_INVALID_STATE;
|
|
}
|
|
|
|
values[index] = value;
|
|
return RESULT_SUCCESS;
|
|
}
|
|
} // namespace Kernel
|