VxWorks中主要提供IEEE的POSIX1003.1b标准定时器和WatchDog两种定时机制。
其中,WatchDog定时器主要作为系统时钟中断服务程序(ISR)的一部分维护。定时器超时后,关联的超时函数将会在系统时钟中断上下文中运行,即单独于当前进程之外运行。这个时候,超时函数与中断服务程序具有同等的约束条件,限制很大。比如,不能有可能导致阻塞的函数(malloc...),无参数且返回类型为void,不可重复进入,禁止中断等等。
LZ实习项目为协议栈开发,所以,对于定时器超时处理,首先应当在当前协议进程中进行,并且超时处理是非常有可能需要发送消息,因此需要带回复消息参数等等,基于以上原因,主要就看了下对POSIX定时机制并记录。
POSIX定时器:
POSIX定时器建立在时钟与信号基础之上,任务程序在指定时间间隔后向自身发送信号并进行处理。程序自身可创建、设置以及删除定时器。
POSIX基本标准是只支持秒级分辨率。由于大多数实时操作系统对定时器有更高要求,因此POSIX的两种扩展:XSI扩展和TMR扩展,他们分别定义了微秒级和纳秒级的时