Crate axtask

source ·
Expand description

ArceOS task management module.

This module provides primitives for task management, including task creation, scheduling, sleeping, termination, etc. The scheduler algorithm is configurable by cargo features.

Cargo Features

  • multitask: Enable multi-task support. If it’s enabled, complex task management and scheduling is used, as well as more task-related APIs. Otherwise, only a few APIs with naive implementation is available.
  • irq: Interrupts are enabled. If this feature is enabled, timer-based APIs can be used, such as sleep, sleep_until, and WaitQueue::wait_timeout.
  • preempt: Enable preemptive scheduling.
  • sched_fifo: Use the FIFO cooperative scheduler. It also enables the multitask feature if it is enabled. This feature is enabled by default, and it can be overriden by other scheduler features.
  • sched_rr: Use the Round-robin preemptive scheduler. It also enables the multitask and preempt features if it is enabled.
  • sched_cfs: Use the Completely Fair Scheduler. It also enables the the multitask and preempt features if it is enabled.

Structs

  • CurrentTaskmultitask
    A wrapper of AxTaskRef as the current task.
  • The status of the scheduler
  • TaskIdmultitask
    A unique identifier for a thread.
  • TaskInnermultitask
    The inner task structure used as the minimal unit of scheduling.
  • WaitQueuemultitask
    A queue to store sleeping tasks.

Enums

Statics

Functions

  • currentmultitask
    Gets the current task.
  • Checks if the current task should be preempted.
  • Gets the current task, or returns None if the current task is not initialized.
  • exitmultitask
    Exits the current task.
  • Initializes the task scheduler (for the primary CPU).
  • Initializes the task scheduler for secondary CPUs.
  • joinmultitask
    Current task is going to sleep, it will be woken up when the given task exits.
  • new_taskmultitask
    Create a new task.
  • on_timer_tickmultitask
    Handles periodic timer ticks for the task manager.
  • run_idlemultitask
    The idle task routine.
  • set_prioritymultitask
    Set the priority for current task.
  • Current task is going to sleep for the given duration.
  • Current task is going to sleep, it will be woken up at the given deadline.
  • spawnmultitask
    Spawns a new task with the default parameters.
  • spawn_rawmultitask
    Spawns a new task with the given parameters.
  • vfork_suspendmultitask
    Current task is going to sleep. It will be woken up when the given task does exec syscall or exit.
  • To wake up the task that is blocked because vfork out of current task
  • Current task gives up the CPU time voluntarily, and switches to another ready task.

Type Aliases

  • AxTaskRefmultitask
    The reference type of a task.