-sys_arch interface for lwIP 0.5
+sys_arch interface for lwIP 0.6++
Author: Adam Dunkels
only be blocked for the specified time (measured in
milliseconds).
- If the timeout argument is non-zero, the return value is the amount
- of time spent waiting for the semaphore to be signaled. If the
- semaphore wasn't signaled within the specified time, the return
- value is zero. If the thread didn't have to wait for the semaphore
- (i.e., it was already signaled), care must be taken to ensure that
- the function does not return a zero value since this is used to
- indicate that a timeout occured. A suitable way to implement this is
- to check if the time spent waiting is zero and if so, the value 1 is
- returned.
+ If the timeout argument is non-zero, the return value is the number of
+ milliseconds spent waiting for the semaphore to be signaled. If the
+ semaphore wasn't signaled within the specified time, the return value is
+ 0xffffffff. If the thread didn't have to wait for the semaphore (i.e., it
+ was already signaled), the function may return zero.
Notice that lwIP implements a function with a similar name,
sys_sem_wait(), that uses the sys_arch_sem_wait() function.
Starts a new thread with priority "prio" that will begin its execution in the
function "thread()". The "arg" argument will be passed as an argument to the
- thread() function. The id of the new thread is returned.
+ thread() function. The id of the new thread is returned. Both the id and
+ the priority are system dependent.
- sys_prot_t sys_arch_protect(void)
if(timeouts->next->time > 0) {
time = sys_arch_mbox_fetch(mbox, msg, timeouts->next->time);
} else {
- time = 0;
+ time = 0xffffffff;
}
- if(time == 0) {
- /* If time == 0, a timeout occured before a message could be
+ if(time == 0xffffffff) {
+ /* If time == 0xffffffff, a timeout occured before a message could be
fetched. We should now call the timeout handler and
deallocate the memory allocated for the timeout. */
tmptimeout = timeouts->next;
/* We try again to fetch a message from the mbox. */
goto again;
} else {
- /* If time > 0, a message was received before the timeout
+ /* If time != 0xffffffff, a message was received before the timeout
occured. The time variable is set to the number of
- microseconds we waited for the message. */
+ milliseconds we waited for the message. */
if(time <= timeouts->next->time) {
timeouts->next->time -= time;
} else {
if(timeouts->next->time > 0) {
time = sys_arch_sem_wait(sem, timeouts->next->time);
} else {
- time = 0;
+ time = 0xffffffff;
}
- if(time == 0) {
- /* If time == 0, a timeout occured before a message could be
+ if(time == 0xffffffff) {
+ /* If time == 0xffffffff, a timeout occured before a message could be
fetched. We should now call the timeout handler and
deallocate the memory allocated for the timeout. */
tmptimeout = timeouts->next;
/* We try again to fetch a message from the mbox. */
goto again;
} else {
- /* If time > 0, a message was received before the timeout
+ /* If time != 0xffffffff, a message was received before the timeout
occured. The time variable is set to the number of
- microseconds we waited for the message. */
+ milliseconds we waited for the message. */
if(time <= timeouts->next->time) {
timeouts->next->time -= time;
} else {