add jump inside page under kernel/tmr.md
This commit is contained in:
parent
4c79e590c1
commit
9c1db5c7f8
|
@ -1,5 +1,14 @@
|
||||||
# 节拍机制
|
# 节拍机制
|
||||||
|
|
||||||
|
* [简介](#intro)
|
||||||
|
* [函数接口](#func_api)
|
||||||
|
* [定时器机制](#tmr_mechanism)
|
||||||
|
* [结构定义](#structure)
|
||||||
|
* [软件定时器接口](#timer_api)
|
||||||
|
|
||||||
|
|
||||||
|
<span id="intro"></span>
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
每一个操作系统都需要一个时钟计数,提供“心跳”计数,该时钟可以提供系统处理所有和时钟相关的事件。
|
每一个操作系统都需要一个时钟计数,提供“心跳”计数,该时钟可以提供系统处理所有和时钟相关的事件。
|
||||||
XiUOS的“心跳”通过芯片提供的硬件定时器产生的周期性中断进行计数,XiUOS可以在menuconfig界面进行配置,配置单位为毫秒。
|
XiUOS的“心跳”通过芯片提供的硬件定时器产生的周期性中断进行计数,XiUOS可以在menuconfig界面进行配置,配置单位为毫秒。
|
||||||
|
@ -9,8 +18,7 @@ XiUOS的“心跳”通过芯片提供的硬件定时器产生的周期性中断
|
||||||
|
|
||||||
界面中的数值将配置给变量XS_TICK_PER_SECOND,该变量解释为每秒钟支持的节拍数(tick)。例如,XS_TICK_PER_SECOND
|
界面中的数值将配置给变量XS_TICK_PER_SECOND,该变量解释为每秒钟支持的节拍数(tick)。例如,XS_TICK_PER_SECOND
|
||||||
配置为100,则tick节拍表示10毫秒,即一个时间片(timeslice)为10毫秒。
|
配置为100,则tick节拍表示10毫秒,即一个时间片(timeslice)为10毫秒。
|
||||||
当节拍配置成功后,系统支持的调度算法、软件定时器等依赖于该时钟周期服务的事件就可以正常工作了。例如,在XiUOS支持
|
当节拍配置成功后,系统支持的调度算法、软件定时器等依赖于该时钟周期服务的事件就可以正常工作了。例如,在XiUOS支持的时间片轮转算法当中,每进行的一次线程切换为10个tick。
|
||||||
的时间片轮转算法当中,每进行的一次线程切换为10个tick。
|
|
||||||
|
|
||||||
节拍计数执行流程如下图所示
|
节拍计数执行流程如下图所示
|
||||||
|
|
||||||
|
@ -18,6 +26,8 @@ XiUOS的“心跳”通过芯片提供的硬件定时器产生的周期性中断
|
||||||
|
|
||||||
在每一个定时器中断到来时,进行常规的中断执行流,定时器按照每一个tick单位进行触发中断,在中断服务程序当中进行自增,并对当前运行线程的时间片进行计算;同步可处理定时器的计数时间。
|
在每一个定时器中断到来时,进行常规的中断执行流,定时器按照每一个tick单位进行触发中断,在中断服务程序当中进行自增,并对当前运行线程的时间片进行计算;同步可处理定时器的计数时间。
|
||||||
|
|
||||||
|
<span id="func_api"></span>
|
||||||
|
|
||||||
## 函数接口
|
## 函数接口
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
@ -41,11 +51,15 @@ xs_uint32 xs_CurrentTicksGain(void);
|
||||||
```
|
```
|
||||||
该函数用于获取当前的时钟节拍数。
|
该函数用于获取当前的时钟节拍数。
|
||||||
|
|
||||||
|
<span id="tmr_mechanism"></span>
|
||||||
|
|
||||||
## 定时器机制
|
## 定时器机制
|
||||||
软件定时器模块根据系统的节拍心跳(tick)提供软件定时服务,用户可以设定固定的超时时间,
|
软件定时器模块根据系统的节拍心跳(tick)提供软件定时服务,用户可以设定固定的超时时间,
|
||||||
当系统运行的节拍数到达用户设定的超时时间时,便执行用户定义的超时回调函数进行业务处理。
|
当系统运行的节拍数到达用户设定的超时时间时,便执行用户定义的超时回调函数进行业务处理。
|
||||||
软件定时器的存在可以解决硬件定时器数量不足的问题。
|
软件定时器的存在可以解决硬件定时器数量不足的问题。
|
||||||
|
|
||||||
|
<span id="structure"></span>
|
||||||
|
|
||||||
### 软件定时器结构定义
|
### 软件定时器结构定义
|
||||||
```c
|
```c
|
||||||
#define TRIGGE_WAY_ONCE (1 << 0)
|
#define TRIGGE_WAY_ONCE (1 << 0)
|
||||||
|
@ -75,6 +89,8 @@ typedef struct xs_Timer *xs_timer_x;
|
||||||
| link | 系统中所有定时器构成的链表 |
|
| link | 系统中所有定时器构成的链表 |
|
||||||
| levels | 查询链表 |
|
| levels | 查询链表 |
|
||||||
|
|
||||||
|
<span id="timer_api"></span>
|
||||||
|
|
||||||
### 软件定时器接口
|
### 软件定时器接口
|
||||||
定时器用户操作结构体定义如下:
|
定时器用户操作结构体定义如下:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue