以Mark3为首的using namespace命名空间,在该下面有很多这个OS的类,当然你也可以写自己专用类,
但在这之前,我们要搞清楚OS内核的CLASS类,必竟它们正在被大量的使用。
首先Mark3为主命名空间,里面有一个Atomic子命名空间,该Atomic实用程序模块为原子操作提供原语——即保证不间断执行的操作
其他就是一些内核class类:
AutoAlloc:允许用户为特定对象类型和大小创建自定义动态内存实现,分配器可以避免在典型的嵌入式系统中出现的内存碎片和耗尽问题。
BlockingObject: 用于实现诸如信号灯、互斥器、消息队列或任何其他可能导致线程在某些外部刺激下暂停执行的东西。
CircularLinkList: 循环链接列表数据类型,继承自基础LinkList类型。
CoList: 实现了协程对象的循环链表结构。
ConditionVariable: 此类实现条件变量。
Coroutine: 实现了一个轻量级的、运行到完成的任务,它构成了 Mark3 中协作任务调度的基础。
CoScheduler: 这个类实现了协程调度器。 与 Mark3 线程调度器类似,最高优先级的活动对象被调度/返回执行。
CriticalGuard: 此类为关键部分提供了 RAII 的实现。 对象创建导致调用关键部分。 随后的析构函数调用导致临界区被释放
CriticalSection: 此类基于作为每个端口的一部分实现的宏/内联函数实现可移植的 CriticalSection 接口
DoubleLinkList: 双向链表数据类型,继承自基本 LinkList 类型
EventFlag: 此类实现了一个阻塞对象,类似于信号量或互斥体,通常用于根据系统内发生的事件同步线程执行。 每个 EventFlag 对象都包含一个 16 位的位掩码,用于触发关联线程上的事件
Kernel: 此类封装了所有的内核启动、配置和管理功能
KernelSWI: 此类提供用于实现内核使用的上下文切换中断的软件中断。 该接口必须由移植层中特定于目标的代码实现。
KernelTimer: 此类提供了一个计时器接口,供内核中所有基于时间的调度/计时器子系统使用。 该接口必须由移植层中特定于目标的代码实现。
LinkList: 派生所有其他链表的抽象数据类型
LinkListNode: 此类 基本链表节点数据结构。 这些数据由链表类类型管理,并且可以在它们之间透明地使用
LockGuard: 此类提供基于 Mark3 的内核 Mutex 对象的 RAII 锁。 请注意,Mark3 不支持异常,因此必须注意确保仅在可以满足该约束的情况下使用此对象
Mailbox: 此类实现基于发送/接收包含固定大小数据的信封的 IPC 机制,在初始化时配置)驻留在用户提供的内存缓冲区中
MemUtil: 字符串和内存操作类
Message: 该对象基于包含数据指针和最小应用程序定义元数据的对象交换提供基于线程安全消息的 IPC 服务。 消息将由发送方分配/产生,并由接收方解除分配/消费
MessagePool: 为线程间交换的消息对象实现了一个简单的分配器。 发送者分配(弹出)消息,然后将它们发送给接收者。 收到后,接收者有责任将消息释放(推送)回池中
MessageQueue: 实现一种用于在线程之间发送/接收数据的机制。 允许线程阻塞,等待从其他上下文发送消息
Mutex: 基于 BlockingObject 提供互斥锁的类
Notify: 通知类。 此类提供了一种阻塞对象类型,允许一个或多个线程在恢复操作之前等待事件发生
PriorityMapL1: 该类实现了一个优先位图数据结构。 对象内部存储中的每一位代表一个优先级。
PriorityMapL2: 该类实现了一个优先位图数据结构。 对象内部存储中的每一位代表一个优先级。
ProfileTimer: 分析计时器。 此类用于执行代码的高性能分析,以查看 int32_t 某些操作如何进行。 可用于检测关键算法和时间关键操作的性能,以确保实时行为。
Quantum: 用于实现线程量子功能的静态类,这是循环线程调度的基础。
ReaderWriterLock: 此类实现了一个对象,该对象根据资源的预期用途编组对资源的访问。 读写锁允许多个并发读取访问,或对资源的单个写入访问
Scheduler: 此类为内核管理的所有活动线程提供基于优先级的循环线程调度。
SchedulerGuard: 此类实现对调度程序全局状态的基于 RAII 的控制。 在对象构造时,调度程序的状态在本地缓存并且调度程序被禁用(如果尚未禁用)。 在对象销毁时,调度程序的先前状态被恢复
Semaphore:提供 Binary 和 Counting 信号量对象,基于 Blocking Object 基类
Streamer: 这个类实现了一个循环字节缓冲区,带有线程和中断安全方法,用于写入和读取缓冲区。 此类类型的对象旨在在线程之间或线程和中断之间共享
Thread: 该对象提供基本线程控制数据结构和函数,用于定义 Mark3 操作系统中的单个执行线程。
ThreadList: 此类用于构建线程管理工具,例如调度程序和阻塞对象。
ThreadListList: 用于跟踪 OS 内核中所有活动的线程列表的类。 在任何时间点,都可以遍历该列表,以获得系统中所有正在运行、阻塞或停止的线程的完整视图
ThreadPort: 类定义了内核线程所需的特定于目标的函数
Timer: 此类提供内核管理的计时器,用于提供高精度延迟。 功能对用户代码都很有用,并在内核及其阻塞对象中广泛使用,以实现循环调度、线程休眠和超时。
TimerList: 此类实现计时器对象的双向链表
TimerScheduler: 这实现了一个“静态”类,用于管理整个系统中使用的定时器的全局列表。
Token_t: 描述符结构格式
TypedCircularLinkList: 循环链表数据类型,继承自基本 LinkList 类型,并模板化用于链表节点派生数据类型。
TypedDoubleLinkList: 双链表数据类型,继承自基本 LinkList 类型,模板化用于链表节点派生数据类型
TypedLinkListNode: 为指定的对象类型提供链表节点类型。 这可以与类型化的链接列表数据结构一起使用来管理对象列表,而不必在基类型和派生类之间进行静态转换。
这些就是全部class类的说明,上几张图示,找一下class感觉:
另外,C++还有这些操作:
Forward declarations翻译过来是“前向申明”,这个CoList类是其他文件内的,但是为了使用它,所以做了一个申明,
注意,这是一个类,没有进行实例一个对像!!暂时当成extern的作用。
下图为kernel基本文件的缩影:
=== END ===