public KThread( AThread Thread, Process Process, Horizon System, int ProcessorId, int Priority, int ThreadId) : base(System) { this.ThreadId = ThreadId; Context = Thread; Owner = Process; PreferredCore = ProcessorId; Scheduler = System.Scheduler; SchedulingData = System.Scheduler.SchedulingData; SiblingsPerCore = new LinkedListNode <KThread> [KScheduler.CpuCoresCount]; MutexWaiters = new LinkedList <KThread>(); AffinityMask = 1 << ProcessorId; DynamicPriority = BasePriority = Priority; CurrentCore = PreferredCore; }
public KThread(Horizon system) : base(system) { _scheduler = system.Scheduler; _schedulingData = system.Scheduler.SchedulingData; SiblingsPerCore = new LinkedListNode <KThread> [KScheduler.CpuCoresCount]; _mutexWaiters = new LinkedList <KThread>(); }
public KThread(Horizon System) : base(System) { Scheduler = System.Scheduler; SchedulingData = System.Scheduler.SchedulingData; SiblingsPerCore = new LinkedListNode <KThread> [KScheduler.CpuCoresCount]; MutexWaiters = new LinkedList <KThread>(); }
public KScheduler(Horizon System) { this.System = System; SchedulingData = new KSchedulingData(); CoreManager = new HleCoreManager(); CoreContexts = new KCoreContext[CpuCoresCount]; for (int Core = 0; Core < CpuCoresCount; Core++) { CoreContexts[Core] = new KCoreContext(this, CoreManager); } }
public KScheduler(Horizon system) { _system = system; SchedulingData = new KSchedulingData(); CoreManager = new HleCoreManager(); CoreContexts = new KCoreContext[CpuCoresCount]; for (int core = 0; core < CpuCoresCount; core++) { CoreContexts[core] = new KCoreContext(this, CoreManager); } }
public KScheduler() { SchedulingData = new KSchedulingData(); CoreManager = new HleCoreManager(); CoreContexts = new KCoreContext[CpuCoresCount]; for (int Core = 0; Core < CpuCoresCount; Core++) { CoreContexts[Core] = new KCoreContext(this, CoreManager); } if (!MultiCoreScheduling) { Thread PreemptionThread = new Thread(PreemptCurrentThread); KeepPreempting = true; PreemptionThread.Start(); } }