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.

Macros§

Structs§

Traits§

Functions§

  • currentmultitask
    Gets the current task.
  • 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.
  • on_timer_tickmultitask and irq
    Handles periodic timer ticks for the task manager.
  • run_idlemultitask
    The idle task routine.
  • Set the affinity for the current task. AxCpuMask is used to specify the CPU affinity. Returns true if the affinity is set successfully.
  • 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.
  • spawn_taskmultitask
    Adds the given task to the run queue, returns the task reference.
  • Current task gives up the CPU time voluntarily, and switches to another ready task.

Type Aliases§

  • AxCpuMaskmultitask
    The wrapper type for [cpumask::CpuMask] with SMP configuration.
  • AxTaskRefmultitask
    The reference type of a task.