- 论坛徽章:
- 0
|
还是没完全明白,你是想测试一下VxWorks的watchdog timer是否正常工作了?“当创建成功时候返回ID,进入看门狗程序”--不明白这句话是什么意思,创建一个watchdog之后实际上就是分配了内存而已:
WDOG_ID wdCreate (void)
{
WDOG_ID wdId;
#ifdef WV_INSTRUMENTATION
int level;
#endif
if ((!wdLibInstalled) && (wdLibInit () != OK))
return (NULL); /* package init problem */
wdId = (WDOG_ID) objAlloc (wdClassId);
/* initialize allocated watchdog */
if ((wdId != NULL) && (wdInit (wdId) != OK))
{
objFree (wdClassId, (char *) wdId);
return (NULL);
}
#ifdef WV_INSTRUMENTATION
/* windview - level 1 event logging */
level = intLock ();
EVT_OBJ_1 (OBJ, wdId, wdClassId, EVENT_WDCREATE, wdId);
intUnlock (level);
#endif
return (wdId);
}
|
用wdStart才会传入一个回调函数来定时执行。至于测试传入错误的Timer ID没太大意义,这些系统操作已经很成熟了,难不成你在Win32下编程还对每一个API进行一些完整的测试?
至于说时间的话看你要求的精度了。它一般都是用时钟中断实现的,以我所熟悉的PowerPC为例,是用Decrement Interrupt来实现的,如果自己的代码中有长时间的锁中断的话(如锁中断之后操作500ms)是可以导致它丢掉几次的。
另外,建议你少用一些感叹号。就算很急,也不用这么激动吧 |
|