|
偶正在看ucosii4skyeye的源代码,但是有某处有疑问,请指正。
sys_arch.c\sys_arch_sem_wait()
**************************
//yangye 2003-1-25
u16_t sys_arch_sem_wait(sys_sem_t sem, u16_t timeout)
{
......
......
OSSemPend ((OS_EVENT *)sem,(u16_t)ucos_timeout, (u8_t *)&err);
//should not return 0 when wait time is 0, only when timeout!
//see sys_arch.txt in lwip/doc
if(err == OS_TIMEOUT)
return 0;
else
return 1;
}
*************************
上面是源代码的一部分。sys_arch_sem_wait()这个函数应该是根据lwip0.5.3的sys_arch.txt里面的说明来实现的。
sys_arch.txt里面关于此函数的说明如下:
- u16_t sys_arch_sem_wait(sys_sem_t sem, u16_t timeout)
......
If the timeout argument is non-zero, the return value is the amount of time spent waiting for the semaphore to be signaled.
文档里面指出:若timeout参数不为0,函数的返回值就是等待消息的时间(如果没有超时的话)。但是代码里只是返回了0或者1,并没有返回这个等待过程所经历的时间。
是否没有按照lwip的文档来实现这个函数? 还是有什么特殊的原因,请不吝赐教! |
|