读书人

嵌入式操作系统内核原理跟开发(实时系

发布时间: 2012-10-18 13:46:56 作者: rapoo

嵌入式操作系统内核原理和开发(实时系统中的定时器)


【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

关于定时器的内容,其实我们之前也讨论过,也书写过相应的代码,但是表达得比较晦涩,效率也比较低。所以我们这里重新再讲一下定时器的相关代码,看看嵌入式系统中的定时器是怎么实现的。在我们之前讨论线程延时的时候就使用hash的方法,将不同的线程归类到不同的延时队列当中,并且按照时间长短先后排列,这样在最短的时间内就可以寻找到最合适的线程了。本质上,线程延时和定时器的基本原理是一样的。唯一的区别就是,线程延时响应的优先级要高一些,而定时器一般由独立线程完成,rawos也是这么做的。

RAW_U16 raw_timer_delete(RAW_TIMER *timer_ptr) { RAW_SR_ALLOC();  #if (RAW_TIMER_FUNCTION_CHECK > 0)  if (timer_ptr == 0) { return RAW_NULL_OBJECT; }  #endif  if (timer_ptr->timer_state == TIMER_DELETED) {  return RAW_TIMER_STATE_INVALID;  }  RAW_CRITICAL_ENTER();  timer_list_remove(timer_ptr); timer_ptr->timer_state = TIMER_DELETED;  RAW_CRITICAL_EXIT();     return RAW_SUCCESS;  } 
定时器的删除函数和定时器的停止函数是一样的,主要是判断逻辑不一样的。删除定时器,只要定时器的状态不是已经删除就可以了,其他的操作都是一样的。




读书人网 >操作系统

热点推荐