]> oss.titaniummirror.com Git - tinyos-2.x.git/commit
Fix possible overwrite of state changes make in a component's Init.init()
authorR. Steve McKown <rsmckown@gmail.com>
Mon, 19 Apr 2010 22:13:15 +0000 (16:13 -0600)
committerR. Steve McKown <rsmckown@gmail.com>
Thu, 4 Nov 2010 14:25:29 +0000 (08:25 -0600)
commit728960e56f2ef3e1562df1b737caa29556776d9d
treeaa256c4fa82521dcada8d0524f0d0d146d03d412
parent8663a8d0415852bd7f8a6901e259f052f347339e
Fix possible overwrite of state changes make in a component's Init.init()

If a component using State and providing Init is wired to MainC.SoftwareInit,
the component cannot reliably call State.forceState() inside its Init.init().
If ncc renders MainC.SoftwareInit.Init()'s fanout calling the component's
Init.init() before StateImplP's Init.init(), the latter sets the state[] array
members all to zero (S_IDLE), undoing any state change the component may have
attempted.

The easy fix is to remove the extra initiation of state[] in StateImplP's
Init.init().  Becuase state[] is a static, its elements are guaranteed to have
values of zero (S_IDLE).
tos/system/StateImplP.nc