EthernetNetIf Compatibility.
Dependents: XBeeWiFi_SPI_example
Fork of NetServicesSource by
Diff: lwip/core/timers.c
- Revision:
- 5:dd63a1e02b1b
- Parent:
- 0:632c9925f013
diff -r fd826cad83c0 -r dd63a1e02b1b lwip/core/timers.c --- a/lwip/core/timers.c Fri Jul 09 14:46:47 2010 +0000 +++ b/lwip/core/timers.c Tue Jul 27 15:59:42 2010 +0000 @@ -42,6 +42,9 @@ #include "lwip/opt.h" #include "lwip/timers.h" + +#if LWIP_TIMERS + #include "lwip/def.h" #include "lwip/memp.h" #include "lwip/tcpip.h" @@ -250,15 +253,15 @@ * - by calling sys_check_timeouts() (NO_SYS==1 only) * * @param msecs time in milliseconds after that the timer should expire - * @param h callback function to call when msecs have elapsed + * @param handler callback function to call when msecs have elapsed * @param arg argument to pass to the callback function */ #if LWIP_DEBUG_TIMERNAMES void -sys_timeout_debug(u32_t msecs, sys_timeout_handler h, void *arg, const char* handler_name) +sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name) #else /* LWIP_DEBUG_TIMERNAMES */ void -sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg) +sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg) #endif /* LWIP_DEBUG_TIMERNAMES */ { struct sys_timeo *timeout, *t; @@ -269,19 +272,13 @@ return; } timeout->next = NULL; - timeout->h = h; + timeout->h = handler; timeout->arg = arg; timeout->time = msecs; #if LWIP_DEBUG_TIMERNAMES timeout->handler_name = handler_name; -#endif /* LWIP_DEBUG_TIMERNAMES */ - -#if LWIP_DEBUG_TIMERNAMES - LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" h=%p arg=%p name=%s\n", - (void *)timeout, msecs, *(void**)&h, (void *)arg, handler_name)); -#else /* LWIP_DEBUG_TIMERNAMES */ - LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" h=%p arg=%p\n", - (void *)timeout, msecs, *(void**)&h, (void *)arg)); + LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" handler=%s arg=%p\n", + (void *)timeout, msecs, handler_name, (void *)arg)); #endif /* LWIP_DEBUG_TIMERNAMES */ if (next_timeout == NULL) { @@ -313,13 +310,13 @@ * entry, even though the timeout has not triggered yet. * * @note This function only works as expected if there is only one timeout - * calling 'h' in the list of timeouts. + * calling 'handler' in the list of timeouts. * - * @param h callback function that would be called by the timeout - * @param arg callback argument that would be passed to h + * @param handler callback function that would be called by the timeout + * @param arg callback argument that would be passed to handler */ void -sys_untimeout(sys_timeout_handler h, void *arg) +sys_untimeout(sys_timeout_handler handler, void *arg) { struct sys_timeo *prev_t, *t; @@ -328,7 +325,7 @@ } for (t = next_timeout, prev_t = NULL; t != NULL; prev_t = t, t = t->next) { - if ((t->h == h) && (t->arg == arg)) { + if ((t->h == handler) && (t->arg == arg)) { /* We have a match */ /* Unlink from previous in list */ if (prev_t == NULL) { @@ -360,18 +357,15 @@ { struct sys_timeo *tmptimeout; u32_t diff; - sys_timeout_handler h; + sys_timeout_handler handler; void *arg; int had_one; u32_t now; -#if LWIP_DEBUG_TIMERNAMES - const char *handler_name; -#endif /* LWIP_DEBUG_TIMERNAMES */ now = sys_now(); if (next_timeout) { - /* @todo: wrap around? */ - diff = now - timeouts_last_time; + /* this cares for wraparounds */ + diff = LWIP_U32_DIFF(now, timeouts_last_time); do { had_one = 0; @@ -382,19 +376,17 @@ timeouts_last_time = now; diff -= tmptimeout->time; next_timeout = tmptimeout->next; - h = tmptimeout->h; + handler = tmptimeout->h; arg = tmptimeout->arg; #if LWIP_DEBUG_TIMERNAMES - handler_name = tmptimeout->handler_name; + if (handler != NULL) { + LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%s arg=%p\n", + tmptimeout->handler_name, arg)); + } #endif /* LWIP_DEBUG_TIMERNAMES */ memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - if (h != NULL) { -#if LWIP_DEBUG_TIMERNAMES - LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%p(%p) (%s)\n", *(void**)&h, arg, handler_name)); -#else /* LWIP_DEBUG_TIMERNAMES */ - LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%p(%p)\n", *(void**)&h, arg)); -#endif /* LWIP_DEBUG_TIMERNAMES */ - h(arg); + if (handler != NULL) { + handler(arg); } } /* repeat until all expired timers have been called */ @@ -427,11 +419,8 @@ { u32_t time_needed; struct sys_timeo *tmptimeout; - sys_timeout_handler h; + sys_timeout_handler handler; void *arg; -#if LWIP_DEBUG_TIMERNAMES - const char *handler_name; -#endif /* LWIP_DEBUG_TIMERNAMES */ again: if (!next_timeout) { @@ -449,24 +438,23 @@ deallocate the memory allocated for the timeout. */ tmptimeout = next_timeout; next_timeout = tmptimeout->next; - h = tmptimeout->h; + handler = tmptimeout->h; arg = tmptimeout->arg; #if LWIP_DEBUG_TIMERNAMES - handler_name = tmptimeout->handler_name; + if (handler != NULL) { + LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%s arg=%p\n", + tmptimeout->handler_name, arg)); + } #endif /* LWIP_DEBUG_TIMERNAMES */ memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - if (h != NULL) { -#if LWIP_DEBUG_TIMERNAMES - LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%p(%p) (%s)\n", *(void**)&h, arg, handler_name)); -#else /* LWIP_DEBUG_TIMERNAMES */ - LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%p(%p)\n", *(void**)&h, arg)); -#endif /* LWIP_DEBUG_TIMERNAMES */ + if (handler != NULL) { /* For LWIP_TCPIP_CORE_LOCKING, lock the core before calling the timeout handler function. */ LOCK_TCPIP_CORE(); - h(arg); + handler(arg); UNLOCK_TCPIP_CORE(); } + LWIP_TCPIP_THREAD_ALIVE(); /* We try again to fetch a message from the mbox. */ goto again; @@ -484,3 +472,11 @@ } #endif /* NO_SYS */ + +#else /* LWIP_TIMERS */ +/* Satisfy the TCP code which calls this function */ +void +tcp_timer_needed(void) +{ +} +#endif /* LWIP_TIMERS */