mirror of https://git.suyu.dev/suyu/suyu
Kernel: Address Feedback 2
This commit is contained in:
parent
a3524879be
commit
e28c7f5217
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>>;
|
||||||
|
|
Loading…
Reference in New Issue