I'm confused by the "watchdog tickle chain"

Phil Torre ptorre at zetron.com
Thu Mar 21 22:08:46 UTC 2002


I'm confused by how the watchdog tickle code works, and want to make
sure that I haven't screwed it up with any of my changes.

(This is RTEMS-4.5.0 on MPC860.)

The function _Watchdog_Tickle() pulls the first Watchdog_Control object
off of the chain, and decrements its delta_interval.  If delta_interval
is zero, it processes the object.  If delta_interval is nonzero, it
just returns.

It seems like this should only work if the chain of objects is sorted
by delta_interval.  However, when I fire up a debugger and walk the
chain (by following the Node.next pointer), it looks like the delta_interval
values are pretty random.

Is this correct, or am I doing something to mess up the operation of
the delta chain?

(This came up because our application code is doing *something* which
causes the wall clock to stop counting.  The _TOD_Current.ticks value
increments forever without _TOD_Current.seconds being updated.  In 
this state, the watchdog object for _TOD_Tickle is still on the delta
chain, but it's stuck behind an object with a delta_interval of
0xffffffe0 or so, like it got decremented twice and underflowed.)

Thanks in advance for any enlightenment.

-Phil
-- 

=====================================================================
Phil Torre                               phone: 425-820-6363 x234
Design Engineer                          email: ptorre at zetron.com
Switching Systems Group                    fax: 425-820-7031
Zetron, Inc.                               web: http://www.zetron.com


  




More information about the users mailing list