resource_limit.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright 2015 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "core/hle/kernel/errors.h"
  5. #include "core/hle/kernel/resource_limit.h"
  6. #include "core/hle/result.h"
  7. namespace Kernel {
  8. namespace {
  9. constexpr std::size_t ResourceTypeToIndex(ResourceType type) {
  10. return static_cast<std::size_t>(type);
  11. }
  12. } // Anonymous namespace
  13. ResourceLimit::ResourceLimit(KernelCore& kernel) : Object{kernel} {}
  14. ResourceLimit::~ResourceLimit() = default;
  15. SharedPtr<ResourceLimit> ResourceLimit::Create(KernelCore& kernel, std::string name) {
  16. SharedPtr<ResourceLimit> resource_limit(new ResourceLimit(kernel));
  17. resource_limit->name = std::move(name);
  18. return resource_limit;
  19. }
  20. s64 ResourceLimit::GetCurrentResourceValue(ResourceType resource) const {
  21. return values.at(ResourceTypeToIndex(resource));
  22. }
  23. s64 ResourceLimit::GetMaxResourceValue(ResourceType resource) const {
  24. return limits.at(ResourceTypeToIndex(resource));
  25. }
  26. ResultCode ResourceLimit::SetLimitValue(ResourceType resource, s64 value) {
  27. const auto index = ResourceTypeToIndex(resource);
  28. if (value < values[index]) {
  29. return ERR_INVALID_STATE;
  30. }
  31. values[index] = value;
  32. return RESULT_SUCCESS;
  33. }
  34. } // namespace Kernel