infinite sleep after rtems_task_wake_after()
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Mon Mar 7 17:16:54 UTC 2005
Juergen Zeller wrote:
> I have a special problem with rtems 4.0.0 on a custom i386ex based
> board. One task invokes rtems_task_wake_after (10) and after some time
> this task stays in DELAYED state and doesn't get CPU Time anymore. I
> found out that in the threads Watchdog_Control data the delta_interval
> seems to be overflowed. My question to the specialists:
>
> In watchdog.c -> _Watchdog_Tickle() I read the following code:
> ...
> the_watchdog->delta_interval--;
> if ( the_watchdog->delta_interval != 0 )
> return;
> ...
>
> How can we guarantee that the_watchdog->delta_interval is NOT zero at
> function entry? I think this is a good place for an overflow, but I
> can't believe that this is a bug. Please help me understand. Does
> anybody have another idea, where and how this overflow could happen?
4.0.0 is very old and there have been some bugs fixed in regards
to the code you are near. You want to look at the possibility
of upgrading or at least looking at the 4.6.x source and seeing what
changed.
CVS is a wonderous thing -- browse
http://www.rtems.com/cgi-bin/cvsweb.cgi and see what changed
to the file in question. Be warned that a lot of the core
executive functionality is now in /cpukit but the version
history was preserved.
--
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list