XWOS标准
XWOS的基本类型、概念、习惯
Categories:
2 分钟阅读
基本类型
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
: 位图(无符号)xwtk_t
: 系统滴答计数(64位无符号整数)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_t *
去传递指针,除非是返回数据。- 命名通常是
type_t
的形式,函数指针则为type_f
的形式,对象描述符 则为xwobj_d
。
- 命名通常是
- 对于大数据结构,XWOS并 不会 使用
typedef
来省略关键字struct
。 目的是提醒读者这是一个大结构体。将它作为参数传递时是通过传递 指针 来引用数据。 - 除了 对象描述符
xwobj_d
,XWOS使用typedef
定义数据类型的依据是看此数据类型是否可以定义原子类型。
原子类型
所有基本数据类型增加前缀 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为了解决对象野指针问题而引入的机制。
调度器
调度器 用于管理CPU资源。在多核系统中,XWOS会为每个CPU创建独立的调度器。
滴答定时器
滴答定时器是操作系统内核的一个重要组件。它为调度器产生固定频率中断,使得操作系统调度的代码可以周期性运行。 同时,滴答定时器也为操作系统的定时功能提供单位时间间隔参考。
线程
调度器内的基本调度单位为 线程 。线程是与调度器绑定的。
软件定时器
基于调度器的滴答定时器实现的 软件定时器 也是与调度器绑定的。
锁
XWOS的锁机制有:
同步机制
XWOS的 基本同步机制 :
通讯机制
基于 基本同步机制 ,XWOS的中间件XWMD提供了线程间的通讯机制: