Files
eden/src/core/hle/kernel/resource_limit.cpp
T

78 lines
2.3 KiB
C++
Raw Normal View History

// Copyright 2015 Citra Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include <cstring>
2017-05-29 16:45:42 -07:00
#include "common/assert.h"
#include "common/logging/log.h"
#include "core/hle/kernel/resource_limit.h"
namespace Kernel {
2018-08-28 12:30:33 -04:00
ResourceLimit::ResourceLimit(KernelCore& kernel) : Object{kernel} {}
ResourceLimit::~ResourceLimit() = default;
2018-08-28 12:30:33 -04:00
SharedPtr<ResourceLimit> ResourceLimit::Create(KernelCore& kernel, std::string name) {
SharedPtr<ResourceLimit> resource_limit(new ResourceLimit(kernel));
resource_limit->name = std::move(name);
return resource_limit;
}
s32 ResourceLimit::GetCurrentResourceValue(ResourceType resource) const {
switch (resource) {
case ResourceType::Commit:
2016-09-18 09:38:01 +09:00
return current_commit;
case ResourceType::Thread:
2016-09-18 09:38:01 +09:00
return current_threads;
case ResourceType::Event:
2016-09-18 09:38:01 +09:00
return current_events;
case ResourceType::Mutex:
2016-09-18 09:38:01 +09:00
return current_mutexes;
case ResourceType::Semaphore:
2016-09-18 09:38:01 +09:00
return current_semaphores;
case ResourceType::Timer:
2016-09-18 09:38:01 +09:00
return current_timers;
case ResourceType::SharedMemory:
2016-09-18 09:38:01 +09:00
return current_shared_mems;
case ResourceType::AddressArbiter:
2016-09-18 09:38:01 +09:00
return current_address_arbiters;
case ResourceType::CPUTime:
2016-09-18 09:38:01 +09:00
return current_cpu_time;
default:
2018-07-02 10:13:26 -06:00
LOG_ERROR(Kernel, "Unknown resource type={:08X}", static_cast<u32>(resource));
2016-09-18 09:38:01 +09:00
UNIMPLEMENTED();
return 0;
}
}
u32 ResourceLimit::GetMaxResourceValue(ResourceType resource) const {
switch (resource) {
case ResourceType::Priority:
return max_priority;
case ResourceType::Commit:
2016-09-18 09:38:01 +09:00
return max_commit;
case ResourceType::Thread:
2016-09-18 09:38:01 +09:00
return max_threads;
case ResourceType::Event:
2016-09-18 09:38:01 +09:00
return max_events;
case ResourceType::Mutex:
2016-09-18 09:38:01 +09:00
return max_mutexes;
case ResourceType::Semaphore:
2016-09-18 09:38:01 +09:00
return max_semaphores;
case ResourceType::Timer:
2016-09-18 09:38:01 +09:00
return max_timers;
case ResourceType::SharedMemory:
2016-09-18 09:38:01 +09:00
return max_shared_mems;
case ResourceType::AddressArbiter:
2016-09-18 09:38:01 +09:00
return max_address_arbiters;
case ResourceType::CPUTime:
2016-09-18 09:38:01 +09:00
return max_cpu_time;
default:
2018-07-02 10:13:26 -06:00
LOG_ERROR(Kernel, "Unknown resource type={:08X}", static_cast<u32>(resource));
2016-09-18 09:38:01 +09:00
UNIMPLEMENTED();
return 0;
}
}
} // namespace Kernel