mathias3 wrote on Thursday, September 17, 2009:
Thanks for your answer Richard. I wasn’t sure about this point.
In my application I am using a task supervision functionality additionally to the watchdog timer , too:
For task supervision I implemented an extra task. It periodically sends keep alive requests to the other tasks. Therefor every task has a queue and must send a reply to the supervision task’s queue within a certain time (some of the tasks can block on their queue others need to poll it depending on their purpose). The tick hook function counts up a task local timer variable which gets reset by the supervision task upon the reception of every valid keep alive reply. If one reply is missing and the counter exceeds a limit the hook function sends a reset request to the supervision task’s queue.
As far as I see this works quite fine although I have the problem that I can’t supervise all tasks with this system. E.g. I have a network communication task which uses a blocking select on data reception. I am unable to let it listen to an additional keep alive queue…
Do you see an alternative/better solution where I could supervise all my tasks? What kind of sanity check are you thinking of?
Always appreciate your valuable inputs!