ceph Timer源码分析 ceph定时器主要用来实现某些定时任务,比如osd之间的心跳,monitor之间的心跳等. 源文件: src/common/timer.h src/common/timer.cc src/include/Context.h 定时器事件或者任务 ceph中的事件都继承自Context类,并且实现自己的事件处理方法finish().例如基于定时器的心跳机制就是在finis...猜...
void rt_system_timer_init(void){int i;// 结构体数组,在初始化的时候只有一个元素,就是链表头,后期添加定时器,按定时器定时时间顺序进行顺序插入for (i = 0; i < sizeof(rt_timer_list) / sizeof(rt_timer_list[0]); i++){rt_list_init(rt_timer_list + i);}} 3)rt_system_timer_thread_...
接下来看看第二个函数rt_system_timer_thread_init: 我们继续进入timer线程的入口函数,来看看timer线程具体做了什么事情,这里我们就通过放源码,看注释来分析一下: 代码语言:javascript 复制 <font color="#0033FF"><font color="#0033FF"><font color="#0033FF"><codeclass="language-c">/* system timer thr...
voidrt_timer_init(rt_timer_ttimer,constchar*name,void(*timeout)(void*parameter),void*parameter,rt_tick_ttime,rt_uint8_tflag)参数:1、定时器句柄2、名字3、超时函数4、传递给超时函数的参数5、定时时间(时钟节拍)6、标志(RT_TIMER_FLAG_ONE_SHOT、RT_TIMER_FLAG_PERIODIC、RT_TIMER_FLAG_SOFT_TIMER...
1、调用函数rt_hw_board_init 完成板子初始化工作 2、显示版本信息:rt_show_version 3、初始化系统滴答:rt_system_tick_init 4、系统内核对象初始化:rt_system_object_init 5、定时器初始化:rt_system_timer_init 6、系统堆栈初始化rt_system_heap_init ...
先来看看第一个rt_system_timer_init: 接下来看看第二个函数rt_system_timer_thread_init: 我们继续进入timer线程的入口函数,来看看timer线程具体做了什么事情,这里我们就通过放源码,看注释来分析一下: /* system timer thread entry */ static void rt_thread_timer_entry(void *parameter) ...
rt_system_timer_init(); /* timer thread initialization */ rt_system_timer_thread_init(); (2)rt_system_timer_init (硬件定时器初始化) struct rt_list_node { struct rt_list_node *next; /**< point to next node. */ struct rt_list_node *prev; /**< point to prev node. */ ...
RTT 低功耗管理不起作用rt_system_pm_init 超低功耗产品必然涉及到“唤醒”机制,唤醒后执行 正常的功能代码,这个“唤醒”动作有多种,基本上有外部中断、中断事件、RTC自动唤醒等,外部中断多是IO口中断,比如按键触发,而RTC自动中断相比较“智能”一些,倒计时一定时间后,自动唤醒CPU,所以RTC自动唤醒基本上就是 为超...
5、关于rt_system_timer_thread_init()函数,主要是初始化软件定时器的列表,并且采用静态方式创建一个名为timer的软件定时器,并且把软件定时器线程放入调度器里面,函数实现如下图所示。 6、关于rt_thread_idle_init()函数,主要是根据芯片CPU的数量,使用静态方式创建空闲线程,实际上,空闲线程并不空闲,这个线程在系统...
2)rt_system_timer_init(硬件定时器初始化) void rt_system_timer_init(void){int i;// 结构体数组,在初始化的时候只有一个元素,就是链表头,后期添加定时器,按定时器定时时间顺序进行顺序插入for (i = 0; i < sizeof(rt_timer_list) / sizeof(rt_timer_list[0]); i++){rt_list_init(rt_timer...