PerCore

Struct PerCore 

Source
pub struct PerCore {
    pub run_queue: SpinLock<VecDeque<Box<Thread>>>,
    pub remain: AtomicIsize,
}
Expand description

Per-core scheduler state.

The PerCore struct represents the per-core scheduling state in a multi-core system. Each CPU core maintains its own scheduling queue to manage runnable threads independently. This structure is used within the RoundRobin scheduler to ensure that each core schedules and executes threads in a fair and efficient manner.

Fields§

§run_queue: SpinLock<VecDeque<Box<Thread>>>

Queue of threads ready to run on this CPU core.

  • Protected by a SpinLock to prevent concurrent access issues.
  • Threads are stored in a [VecDeque] to allow efficient push/pop operations.
§remain: AtomicIsize

Remaining time slice for the currently running thread.

  • Uses AtomicIsize for safe atomic updates across multiple CPU cores.
  • Typically decremented on each timer interrupt, triggering a context switch when it reaches zero.
  • You can use [``] for load, store to this variable.

Auto Trait Implementations§

§

impl !Freeze for PerCore

§

impl !RefUnwindSafe for PerCore

§

impl !Send for PerCore

§

impl !Sync for PerCore

§

impl Unpin for PerCore

§

impl !UnwindSafe for PerCore

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.