# TASK_MANAGER in os::task - Rust
a `TaskManager` global instance through lazy_static!
Keywords: rust, rustlang, rust-lang, TASK_MANAGER

# Struct os::task::TASK_MANAGER

source · [−]

    pub struct TASK_MANAGER {
        __private_field: (),
    }

Expand description

a `TaskManager` global instance through lazy_static!

## Fields

`__private_field: ()`

## Methods from Deref<Target = TaskManager>

source

#### fn run_first_task(&self) -> !

Run the first task in task list.

Generally, the first task in task list is an idle task (we call it zero process later). But in ch4, we load apps statically, so the first task is a real app.

source

#### fn mark_current_suspended(&self)

Change the status of current `Running` task into `Ready`.

source

#### fn mark_current_exited(&self)

Change the status of current `Running` task into `Exited`.

source

#### fn find_next_task(&self) -> Option<usize>

Find next task to run and return task id.

In this case, we only return the first `Ready` task in task list.

source

#### fn get_current_token(&self) -> usize

Get the current ‘Running’ task’s token.

source

#### fn get_current_trap_cx(&self) -> &'static mut TrapContext

Get the current ‘Running’ task’s trap contexts.

source

#### fn run_next_task(&self)

Switch current `Running` task to the task we have found, or there is no `Ready` task and we can exit with all applications completed

## Trait Implementations

source

### impl Deref for TASK_MANAGER

#### type Target = TaskManager

The resulting type after dereferencing.

source

#### fn deref(&self) -> &TaskManager

Dereferences the value.

source

### impl LazyStatic for TASK_MANAGER

## Auto Trait Implementations

### impl RefUnwindSafe for TASK_MANAGER

### impl Send for TASK_MANAGER

### impl Sync for TASK_MANAGER

### impl Unpin for TASK_MANAGER

### impl UnwindSafe for TASK_MANAGER

## Blanket Implementations

source

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

source

#### pub fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more

source

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

source

#### pub fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

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

source

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

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

source

#### pub fn from(t: T) -> T

Performs the conversion.

source

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

source

#### pub fn into(self) -> U

Performs the conversion.

source

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

#### type Error = Infallible

The type returned in the event of a conversion error.

source

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

Performs the conversion.

source

### 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.

source

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

Performs the conversion.