Hi, We are thinking about a "supervisor" watchdog, which runs in a high priority task, and has the following characteristics:
a) tasks that "want" to be supervised are registered in the supervisor watchdog b) each supervised task is in one of the following mode: - automatic supervision - manual supervision - sleeping c) in "automatic supervision" mode, the supervisor watchdog keeps track of the program counter of the task. When the PC is the same after N cycles, the watchdog performs a predefined action (e.g. reset). d) supervised tasks in "manual supervision" have to kick the watchdog explicitly (e.g. by invoking a function of the API). e) the watchdog leaves alone the tasks in sleeping mode. The idea of the "automatic supervision" mode is to avoid polluting the task code due to spreading calls to the kick function, specially difficult when having to estimate the "distance" between these function calls. The idea of the "manual supervision" mode, which is rather traditional, is when the task executes tight inner loops. In this scheme, tasks should be in automatic mode as much as possible and switch to manual just in small bounded places of the code. Before entering in the discussion of the implementation, I'd like feeedback about the general idea please. Thanks! Daniel. _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel