yuzu-emu
/
yuzu
Archived
1
0
Fork 0

Kernel: Address Feedback 2

This commit is contained in:
Fernando Sahmkow 2019-10-12 10:38:55 -04:00 committed by FernandoS27
parent a3524879be
commit e28c7f5217
2 changed files with 6 additions and 9 deletions

View File

@ -410,7 +410,7 @@ ResultCode Thread::SetCoreAndAffinityMask(s32 new_core, u64 new_affinity_mask) {
}; };
const bool use_override = affinity_override_count != 0; const bool use_override = affinity_override_count != 0;
if (new_core == static_cast<s32>(CoreFlags::DontChangeIdealCore)) { if (new_core == THREADDONTCHANGE_IDEAL) {
new_core = use_override ? ideal_core_override : ideal_core; new_core = use_override ? ideal_core_override : ideal_core;
if ((new_affinity_mask & (1ULL << new_core)) == 0) { if ((new_affinity_mask & (1ULL << new_core)) == 0) {
return ERR_INVALID_COMBINATION; return ERR_INVALID_COMBINATION;
@ -452,7 +452,7 @@ void Thread::AdjustSchedulingOnStatus(u32 old_flags) {
for (s32 core = 0; core < GlobalScheduler::NUM_CPU_CORES; core++) { for (s32 core = 0; core < GlobalScheduler::NUM_CPU_CORES; core++) {
if (core != processor_id && ((affinity_mask >> core) & 1) != 0) { if (core != processor_id && ((affinity_mask >> core) & 1) != 0) {
scheduler.Unsuggest(current_priority, core, this); scheduler.Unsuggest(current_priority, static_cast<u32>(core), this);
} }
} }
} else if (GetSchedulingStatus() == ThreadSchedStatus::Runnable) { } else if (GetSchedulingStatus() == ThreadSchedStatus::Runnable) {
@ -463,7 +463,7 @@ void Thread::AdjustSchedulingOnStatus(u32 old_flags) {
for (s32 core = 0; core < GlobalScheduler::NUM_CPU_CORES; core++) { for (s32 core = 0; core < GlobalScheduler::NUM_CPU_CORES; core++) {
if (core != processor_id && ((affinity_mask >> core) & 1) != 0) { if (core != processor_id && ((affinity_mask >> core) & 1) != 0) {
scheduler.Suggest(current_priority, core, this); scheduler.Suggest(current_priority, static_cast<u32>(core), this);
} }
} }
} }

View File

@ -35,6 +35,9 @@ enum ThreadProcessorId : s32 {
/// Run thread on the ideal core specified by the process. /// Run thread on the ideal core specified by the process.
THREADPROCESSORID_IDEAL = -2, THREADPROCESSORID_IDEAL = -2,
/// when setting Core and Affiny, keeps the ideal core intact
THREADDONTCHANGE_IDEAL = -3,
/// Indicates that the preferred processor ID shouldn't be updated in /// Indicates that the preferred processor ID shouldn't be updated in
/// a core mask setting operation. /// a core mask setting operation.
THREADPROCESSORID_DONT_UPDATE = -3, THREADPROCESSORID_DONT_UPDATE = -3,
@ -95,12 +98,6 @@ enum class ThreadSchedMasks : u32 {
ForcePauseMask = 0x0070, ForcePauseMask = 0x0070,
}; };
enum class CoreFlags : s32 {
IgnoreIdealCore = -1,
ProcessIdealCore = -2,
DontChangeIdealCore = -3,
};
class Thread final : public WaitObject { class Thread final : public WaitObject {
public: public:
using MutexWaitingThreads = std::vector<SharedPtr<Thread>>; using MutexWaitingThreads = std::vector<SharedPtr<Thread>>;