SimpleKernel 1.17.0
Loading...
Searching...
No Matches
task_control_block.hpp File Reference
#include <cpu_io.h>
#include <etl/flags.h>
#include <etl/intrusive_links.h>
#include <array>
#include <cstddef>
#include <cstdint>
#include "file_descriptor.hpp"
#include "resource_id.hpp"
#include "task_fsm.hpp"
Include dependency graph for task_control_block.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  TaskAuxData
 非调度热路径的任务辅助数据 More...
 
struct  TaskControlBlock
 任务控制块,管理进程/线程的核心数据结构 More...
 
struct  TaskControlBlock::PriorityCompare
 任务优先级比较函数,优先级数值越小,优先级越高 More...
 
struct  TaskControlBlock::WakeTickCompare
 任务唤醒时间比较函数,时间越早优先级越高 More...
 
struct  TaskControlBlock::SchedInfo
 基础调度信息 More...
 
union  TaskControlBlock::SchedData
 不同调度器的专用字段 (互斥使用) More...
 

Namespaces

namespace  clone_flag
 Clone 标志位常量 (用于 sys_clone 系统调用)
 

Typedefs

using Pid = size_t
 进程 ID 类型
 
using ThreadEntry = void(*)(void *)
 线程入口函数类型
 
using CloneFlags = etl::flags< uint64_t, clone_flag::kAllMask >
 克隆标志位
 
using CpuAffinity = etl::flags< uint64_t >
 CPU 亲和性位掩码
 
using ThreadGroupLink = etl::bidirectional_link< 0 >
 线程组侵入式链表节点类型
 

Enumerations

enum class  SchedPolicy : uint8_t { kRealTime = 0 , kNormal = 1 , kIdle = 2 , kPolicyCount }
 调度策略 More...
 

Variables

constexpr uint64_t clone_flag::kVm = 0x00000100
 共享地址空间
 
constexpr uint64_t clone_flag::kFs = 0x00000200
 共享文件系统信息
 
constexpr uint64_t clone_flag::kFiles = 0x00000400
 共享文件描述符表
 
constexpr uint64_t clone_flag::kSighand = 0x00000800
 共享信号处理器
 
constexpr uint64_t clone_flag::kParent = 0x00008000
 保持相同父进程
 
constexpr uint64_t clone_flag::kThread = 0x00010000
 同一线程组
 
constexpr uint64_t clone_flag::kAllMask
 全部标志掩码
 

Typedef Documentation

◆ CloneFlags

using CloneFlags = etl::flags<uint64_t, clone_flag::kAllMask>

克隆标志位

Definition at line 48 of file task_control_block.hpp.

◆ CpuAffinity

using CpuAffinity = etl::flags<uint64_t>

CPU 亲和性位掩码

Definition at line 51 of file task_control_block.hpp.

◆ Pid

using Pid = size_t

进程 ID 类型

Definition at line 20 of file task_control_block.hpp.

◆ ThreadEntry

using ThreadEntry = void (*)(void*)

线程入口函数类型

Definition at line 23 of file task_control_block.hpp.

◆ ThreadGroupLink

using ThreadGroupLink = etl::bidirectional_link<0>

线程组侵入式链表节点类型

Definition at line 73 of file task_control_block.hpp.

Enumeration Type Documentation

◆ SchedPolicy

enum class SchedPolicy : uint8_t
strong

调度策略

Task status type alias — backed by FSM state IDs

Todo:
为什么要定义 TaskStatusId 与 TaskStatus 两个命名空间?可以直接用 TaskStatus 吗?
Enumerator
kRealTime 

实时任务 (最高优先级)

kNormal 

普通任务

kIdle 

空闲任务 (最低优先级)

kPolicyCount 

策略数量

Definition at line 61 of file task_control_block.hpp.

61 : uint8_t {
63 kRealTime = 0,
65 kNormal = 1,
67 kIdle = 2,
70};
@ kNormal
普通任务
@ kPolicyCount
策略数量
@ kRealTime
实时任务 (最高优先级)
@ kIdle
空闲任务 (最低优先级)