mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #372 from lioncash/enum
resource_limit: Make ResourceTypes an enum class
This commit is contained in:
		
						commit
						1723b4d8d4
					
				@ -34,57 +34,57 @@ SharedPtr<ResourceLimit> ResourceLimit::GetForCategory(ResourceLimitCategory cat
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
s32 ResourceLimit::GetCurrentResourceValue(u32 resource) const {
 | 
					s32 ResourceLimit::GetCurrentResourceValue(ResourceType resource) const {
 | 
				
			||||||
    switch (resource) {
 | 
					    switch (resource) {
 | 
				
			||||||
    case COMMIT:
 | 
					    case ResourceType::Commit:
 | 
				
			||||||
        return current_commit;
 | 
					        return current_commit;
 | 
				
			||||||
    case THREAD:
 | 
					    case ResourceType::Thread:
 | 
				
			||||||
        return current_threads;
 | 
					        return current_threads;
 | 
				
			||||||
    case EVENT:
 | 
					    case ResourceType::Event:
 | 
				
			||||||
        return current_events;
 | 
					        return current_events;
 | 
				
			||||||
    case MUTEX:
 | 
					    case ResourceType::Mutex:
 | 
				
			||||||
        return current_mutexes;
 | 
					        return current_mutexes;
 | 
				
			||||||
    case SEMAPHORE:
 | 
					    case ResourceType::Semaphore:
 | 
				
			||||||
        return current_semaphores;
 | 
					        return current_semaphores;
 | 
				
			||||||
    case TIMER:
 | 
					    case ResourceType::Timer:
 | 
				
			||||||
        return current_timers;
 | 
					        return current_timers;
 | 
				
			||||||
    case SHARED_MEMORY:
 | 
					    case ResourceType::SharedMemory:
 | 
				
			||||||
        return current_shared_mems;
 | 
					        return current_shared_mems;
 | 
				
			||||||
    case ADDRESS_ARBITER:
 | 
					    case ResourceType::AddressArbiter:
 | 
				
			||||||
        return current_address_arbiters;
 | 
					        return current_address_arbiters;
 | 
				
			||||||
    case CPU_TIME:
 | 
					    case ResourceType::CPUTime:
 | 
				
			||||||
        return current_cpu_time;
 | 
					        return current_cpu_time;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        LOG_ERROR(Kernel, "Unknown resource type=%08X", resource);
 | 
					        LOG_ERROR(Kernel, "Unknown resource type=%08X", static_cast<u32>(resource));
 | 
				
			||||||
        UNIMPLEMENTED();
 | 
					        UNIMPLEMENTED();
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
u32 ResourceLimit::GetMaxResourceValue(u32 resource) const {
 | 
					u32 ResourceLimit::GetMaxResourceValue(ResourceType resource) const {
 | 
				
			||||||
    switch (resource) {
 | 
					    switch (resource) {
 | 
				
			||||||
    case PRIORITY:
 | 
					    case ResourceType::Priority:
 | 
				
			||||||
        return max_priority;
 | 
					        return max_priority;
 | 
				
			||||||
    case COMMIT:
 | 
					    case ResourceType::Commit:
 | 
				
			||||||
        return max_commit;
 | 
					        return max_commit;
 | 
				
			||||||
    case THREAD:
 | 
					    case ResourceType::Thread:
 | 
				
			||||||
        return max_threads;
 | 
					        return max_threads;
 | 
				
			||||||
    case EVENT:
 | 
					    case ResourceType::Event:
 | 
				
			||||||
        return max_events;
 | 
					        return max_events;
 | 
				
			||||||
    case MUTEX:
 | 
					    case ResourceType::Mutex:
 | 
				
			||||||
        return max_mutexes;
 | 
					        return max_mutexes;
 | 
				
			||||||
    case SEMAPHORE:
 | 
					    case ResourceType::Semaphore:
 | 
				
			||||||
        return max_semaphores;
 | 
					        return max_semaphores;
 | 
				
			||||||
    case TIMER:
 | 
					    case ResourceType::Timer:
 | 
				
			||||||
        return max_timers;
 | 
					        return max_timers;
 | 
				
			||||||
    case SHARED_MEMORY:
 | 
					    case ResourceType::SharedMemory:
 | 
				
			||||||
        return max_shared_mems;
 | 
					        return max_shared_mems;
 | 
				
			||||||
    case ADDRESS_ARBITER:
 | 
					    case ResourceType::AddressArbiter:
 | 
				
			||||||
        return max_address_arbiters;
 | 
					        return max_address_arbiters;
 | 
				
			||||||
    case CPU_TIME:
 | 
					    case ResourceType::CPUTime:
 | 
				
			||||||
        return max_cpu_time;
 | 
					        return max_cpu_time;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        LOG_ERROR(Kernel, "Unknown resource type=%08X", resource);
 | 
					        LOG_ERROR(Kernel, "Unknown resource type=%08X", static_cast<u32>(resource));
 | 
				
			||||||
        UNIMPLEMENTED();
 | 
					        UNIMPLEMENTED();
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -16,17 +16,17 @@ enum class ResourceLimitCategory : u8 {
 | 
				
			|||||||
    OTHER = 3
 | 
					    OTHER = 3
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum ResourceTypes {
 | 
					enum class ResourceType {
 | 
				
			||||||
    PRIORITY = 0,
 | 
					    Priority = 0,
 | 
				
			||||||
    COMMIT = 1,
 | 
					    Commit = 1,
 | 
				
			||||||
    THREAD = 2,
 | 
					    Thread = 2,
 | 
				
			||||||
    EVENT = 3,
 | 
					    Event = 3,
 | 
				
			||||||
    MUTEX = 4,
 | 
					    Mutex = 4,
 | 
				
			||||||
    SEMAPHORE = 5,
 | 
					    Semaphore = 5,
 | 
				
			||||||
    TIMER = 6,
 | 
					    Timer = 6,
 | 
				
			||||||
    SHARED_MEMORY = 7,
 | 
					    SharedMemory = 7,
 | 
				
			||||||
    ADDRESS_ARBITER = 8,
 | 
					    AddressArbiter = 8,
 | 
				
			||||||
    CPU_TIME = 9,
 | 
					    CPUTime = 9,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ResourceLimit final : public Object {
 | 
					class ResourceLimit final : public Object {
 | 
				
			||||||
@ -60,14 +60,14 @@ public:
 | 
				
			|||||||
     * @param resource Requested resource type
 | 
					     * @param resource Requested resource type
 | 
				
			||||||
     * @returns The current value of the resource type
 | 
					     * @returns The current value of the resource type
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    s32 GetCurrentResourceValue(u32 resource) const;
 | 
					    s32 GetCurrentResourceValue(ResourceType resource) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Gets the max value for the specified resource.
 | 
					     * Gets the max value for the specified resource.
 | 
				
			||||||
     * @param resource Requested resource type
 | 
					     * @param resource Requested resource type
 | 
				
			||||||
     * @returns The max value of the resource type
 | 
					     * @returns The max value of the resource type
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    u32 GetMaxResourceValue(u32 resource) const;
 | 
					    u32 GetMaxResourceValue(ResourceType resource) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Name of resource limit object.
 | 
					    /// Name of resource limit object.
 | 
				
			||||||
    std::string name;
 | 
					    std::string name;
 | 
				
			||||||
 | 
				
			|||||||
@ -407,7 +407,7 @@ static ResultCode SetThreadPriority(Handle handle, u32 priority) {
 | 
				
			|||||||
    // Note: The kernel uses the current process's resource limit instead of
 | 
					    // Note: The kernel uses the current process's resource limit instead of
 | 
				
			||||||
    // the one from the thread owner's resource limit.
 | 
					    // the one from the thread owner's resource limit.
 | 
				
			||||||
    SharedPtr<ResourceLimit>& resource_limit = Core::CurrentProcess()->resource_limit;
 | 
					    SharedPtr<ResourceLimit>& resource_limit = Core::CurrentProcess()->resource_limit;
 | 
				
			||||||
    if (resource_limit->GetMaxResourceValue(ResourceTypes::PRIORITY) > priority) {
 | 
					    if (resource_limit->GetMaxResourceValue(ResourceType::Priority) > priority) {
 | 
				
			||||||
        return ERR_NOT_AUTHORIZED;
 | 
					        return ERR_NOT_AUTHORIZED;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -541,7 +541,7 @@ static ResultCode CreateThread(Handle* out_handle, VAddr entry_point, u64 arg, V
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SharedPtr<ResourceLimit>& resource_limit = Core::CurrentProcess()->resource_limit;
 | 
					    SharedPtr<ResourceLimit>& resource_limit = Core::CurrentProcess()->resource_limit;
 | 
				
			||||||
    if (resource_limit->GetMaxResourceValue(ResourceTypes::PRIORITY) > priority) {
 | 
					    if (resource_limit->GetMaxResourceValue(ResourceType::Priority) > priority) {
 | 
				
			||||||
        return ERR_NOT_AUTHORIZED;
 | 
					        return ERR_NOT_AUTHORIZED;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user