|
SimpleKernel 1.17.0
|
任务控制块,管理进程/线程的核心数据结构 More...
#include <task_control_block.hpp>


Classes | |
| struct | PriorityCompare |
| 任务优先级比较函数,优先级数值越小,优先级越高 More... | |
| union | SchedData |
| 不同调度器的专用字段 (互斥使用) More... | |
| struct | SchedInfo |
| 基础调度信息 More... | |
| struct | WakeTickCompare |
| 任务唤醒时间比较函数,时间越早优先级越高 More... | |
Public Member Functions | |
| auto | GetStatus () const -> etl::fsm_state_id_t |
| 获取当前任务状态 | |
| auto | IsThreadGroupLeader () const -> bool |
| 检查是否是线程组的主线程 | |
| auto | JoinThreadGroup (TaskControlBlock *leader) -> void |
| 将线程添加到线程组 | |
| auto | LeaveThreadGroup () -> void |
| 从线程组中移除自己 | |
| auto | GetThreadGroupSize () const -> size_t |
| 获取线程组中的线程数量 | |
| auto | InSameThreadGroup (const TaskControlBlock *other) const -> bool |
| 检查是否与另一个任务在同一线程组 | |
构造/析构函数 | |
| TaskControlBlock (const char *name, int priority, ThreadEntry entry, void *arg) | |
| 构造函数 (内核线程) | |
| TaskControlBlock (const char *name, int priority, uint8_t *elf, int argc, char **argv) | |
| 构造函数 (用户线程) | |
| TaskControlBlock ()=default | |
| TaskControlBlock (const TaskControlBlock &)=delete | |
| TaskControlBlock (TaskControlBlock &&)=delete | |
| auto | operator= (const TaskControlBlock &) -> TaskControlBlock &=delete |
| auto | operator= (TaskControlBlock &&) -> TaskControlBlock &=delete |
| ~TaskControlBlock () | |
Public Attributes | |
| const char * | name {"Unnamed Task"} |
| 任务名称 | |
| Pid | pid {0} |
| 线程 ID (Task ID) | |
| TaskFsm | fsm {} |
| 任务状态机 | |
| SchedPolicy | policy {SchedPolicy::kNormal} |
| 调度策略 | |
| struct TaskControlBlock::SchedInfo | sched_info |
| union TaskControlBlock::SchedData | sched_data |
| uint8_t * | kernel_stack {nullptr} |
| 内核栈 | |
| cpu_io::TrapContext * | trap_context_ptr {nullptr} |
| Trap 上下文 | |
| cpu_io::CalleeSavedContext | task_context {} |
| 任务上下文 | |
| uint64_t * | page_table {nullptr} |
| 页表 | |
| TaskAuxData * | aux {nullptr} |
| 非调度热路径的辅助数据 | |
Static Public Attributes | |
| static constexpr size_t | kDefaultKernelStackSize = 16 * 1024 |
| 默认内核栈大小 (16 KB) | |
任务控制块,管理进程/线程的核心数据结构
仅保留调度热路径字段(状态机、优先级、上下文、页表等)。 进程级辅助数据存储在 TaskAuxData 中,通过 aux 指针访问。
Definition at line 121 of file task_control_block.hpp.
| TaskControlBlock::TaskControlBlock | ( | const char * | name, |
| int | priority, | ||
| ThreadEntry | entry, | ||
| void * | arg | ||
| ) |
构造函数 (内核线程)
| name | 任务名称 |
| priority | 优先级 (数字越小优先级越高) |
| entry | 线程入口函数 |
| arg | 线程参数 |
Definition at line 131 of file task_control_block.cpp.

| TaskControlBlock::TaskControlBlock | ( | const char * | name, |
| int | priority, | ||
| uint8_t * | elf, | ||
| int | argc, | ||
| char ** | argv | ||
| ) |
构造函数 (用户线程)
| name | 任务名称 |
| priority | 优先级 (数字越小优先级越高) |
| elf | 指向 ELF 镜像的指针 |
| argc | 参数个数 |
| argv | 参数数组 |
Definition at line 167 of file task_control_block.cpp.

|
default |
|
delete |
|
delete |
| TaskControlBlock::~TaskControlBlock | ( | ) |
Definition at line 192 of file task_control_block.cpp.

| auto TaskControlBlock::GetStatus | ( | ) | const -> etl::fsm_state_id_t |
获取当前任务状态
Definition at line 88 of file task_control_block.cpp.


| auto TaskControlBlock::GetThreadGroupSize | ( | ) | const -> size_t |
获取线程组中的线程数量
Definition at line 106 of file task_control_block.cpp.
|
inline |
|
inline |
检查是否是线程组的主线程
Definition at line 231 of file task_control_block.hpp.
| auto TaskControlBlock::JoinThreadGroup | ( | TaskControlBlock * | leader | ) | -> void |
| auto TaskControlBlock::LeaveThreadGroup | ( | ) | -> void |
从线程组中移除自己
Definition at line 104 of file task_control_block.cpp.

|
delete |
|
delete |
| TaskAuxData* TaskControlBlock::aux {nullptr} |
| TaskFsm TaskControlBlock::fsm {} |
|
staticconstexpr |
默认内核栈大小 (16 KB)
Definition at line 123 of file task_control_block.hpp.
| uint8_t* TaskControlBlock::kernel_stack {nullptr} |
| const char* TaskControlBlock::name {"Unnamed Task"} |
| uint64_t* TaskControlBlock::page_table {nullptr} |
| Pid TaskControlBlock::pid {0} |
| SchedPolicy TaskControlBlock::policy {SchedPolicy::kNormal} |
| union TaskControlBlock::SchedData TaskControlBlock::sched_data |
| struct TaskControlBlock::SchedInfo TaskControlBlock::sched_info |
| cpu_io::CalleeSavedContext TaskControlBlock::task_context {} |
| cpu_io::TrapContext* TaskControlBlock::trap_context_ptr {nullptr} |