]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/commitdiff
Made lwip timeout measurements accurate by no longer returning 1 millisecond
authordavidhaas <davidhaas>
Fri, 28 Mar 2003 20:46:40 +0000 (20:46 +0000)
committerdavidhaas <davidhaas>
Fri, 28 Mar 2003 20:46:40 +0000 (20:46 +0000)
whenever sys_arch_mbox_wait() and sys_arch_sem_wait() get a message or
semaphore immediately. Updated documentation for this change.
Unix port and Coldfire port have been updated.

doc/sys_arch.txt
src/core/sys.c

index 44fa337208c8e92e825a7e6ead96443cf9a940bf..47c7c0f2b71de49fe18ef81b8cb525b171d2e420 100644 (file)
@@ -1,4 +1,4 @@
-sys_arch interface for lwIP 0.5
+sys_arch interface for lwIP 0.6++
 
 Author: Adam Dunkels
 
@@ -60,15 +60,11 @@ The following functions must be implemented by the sys_arch:
   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.
@@ -124,7 +120,8 @@ to be implemented as well:
 
   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)
 
index ea4d893a6034155cb2c5c9b64dd60a4e1935da1e..05beec596613cfe50dbd85921c97d92c898db738 100644 (file)
@@ -64,11 +64,11 @@ sys_mbox_fetch(sys_mbox_t mbox, void **msg)
     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;
@@ -84,9 +84,9 @@ sys_mbox_fetch(sys_mbox_t mbox, void **msg)
       /* 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 {
@@ -119,11 +119,11 @@ sys_sem_wait(sys_sem_t sem)
     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;
@@ -140,9 +140,9 @@ sys_sem_wait(sys_sem_t sem)
       /* 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 {