XWOS标准
XWOS的基本类型、概念、习惯
Categories:
少于1分钟
基本类型
XWOS的所有可以确定位宽的数据类型被称为 基本数据类型 ,定义如下:
xwu8_t
8位无符号整数xws8_t
8位有符号整数xwu16_t
16位无符号整数xws16_t
16位有符号整数xwu32_t
32位无符号整数xws32_t
32位有符号整数xwu64_t
64位无符号整数xws64_t
64位有符号整数xwsz_t
大小值(无符号)xwssz_t
大小值(有符号)xwstk_t
栈帧(无符号),必须与指针位宽一致xwptr_t
指针的整数值(无符号),必须与指针位宽一致xwreg_t
寄存器(无符号),必须与指针位宽一致xwsreg_t
寄存器(有符号),必须与指针位宽一致xwer_t
错误码(有符号),必须与指针位宽一致xwsq_t
序列值/位置/偏移(无符号),必须与指针位宽一致xwssq_t
序列值/位置/偏移(有符号),必须与指针位宽一致xwsid_t
ID(有符号),必须与指针位宽一致xwid_t
ID(无符号),必须与指针位宽一致typedef void (* xwisr_f)(void)
中断向量(函数指针)xwirq_t
中断号(有符号),负的中断号表示系统异常,正的中断号表示外部中断xwpr_t
优先级(有符号)xwbmp_t
位图(无符号)xwtm_t
时间(64位有符号整数,单位:纳秒)xwlfq_t
无锁队列typedef void (* ctor_f)(void * /*obj*/)
构造函数typedef void (* dtor_f)(void * /*obj*/)
析构函数typedef xws64_t (* xwsc_f)(void * /*arg*/, ...)
系统调用
数据类型命名习惯
用户在阅读XWOS源码时,要注意以下几个命名习惯的隐含意义:
- 对于比较小的数据结构,XWOS会通过
typedef
定义成一种类型。这种类型就像基本数据类型一样, 在函数间传递参数时是直接传递,不会使用type *
去传递指针,除非是返回数据。- 命名通常是
type_t
的形式,函数指针则为type_f
的形式,对象描述符 则为xwobj_d
。
- 命名通常是
- 对于比较大的结构体,XWOS使用关键字
struct
定义。XWOS代码中不会省略关键字struct
。 目的是提醒读者这是一个结构体,将它作为参数传递时是通过传递指针来引用数据。
原子类型
所有基本数据类型增加前缀 atomic_
表示此类型的原子类型。例如: _Atomic xwsq_t
等价于 __xwcc_atomic xwsq_t
等价于 atomic_xwsq_t
。
原子类型的变量可以使用XWOS的 原子操作库 来操作,也可以使用标准C头文件 <stdatomic.h>
中定义的函数来操作。
系统位数
XWOS内核支持32位与64位两种CPU。
时间
XWOS内核使用64位有符号整数 xwtm_t
表示时间,单位为纳秒。并提供一系列操作函数。
详细参考头文件 xwos/osal/time.h 。
对象
xwos_object
是XWOS所有对象的父类。
对象描述符
对象描述符 是XWOS为了解决对象野指针问题而引入的机制。
调度器
XWOS会为每个CPU创建独立的 调度器,每个调度器 独立调度线程,且都有一个私有的滴答定时器。
滴答定时器
为调度器产生固定频率中断的硬件定时器。
线程
调度器内的基本调度单位为 线程 ,因此线程是与调度器绑定的。
软件定时器
基于调度器的滴答定时器实现的 软件定时器 也是与调度器绑定的。
锁
XWOS的锁机制有:
同步机制
XWOS的 基本同步机制 :
通讯机制
基于 基本同步机制 ,XWOS的中间件XWMD提供了线程间的通讯机制:
内存管理
XWOS的内核提供了多种动态 内存管理 的方法。
电源管理
XWOS的内核为 电源管理 ,提供了一套基本的流程。
最后修改 September 22, 2021: chore: :tada: 创建工程 —— 玄武操作系统网站 (8c48765)