Monitor wwnr¶
Name: wwrn - wakeup while not running
Type: per-task deterministic automaton
Author: Daniel Bristot de Oliveira <bristot@kernel.org>
Description¶
This is a per-task sample monitor, with the following definition:
|
|
v
wakeup +-------------+
+--------- | |
| | not_running |
+--------> | | <+
+-------------+ |
| |
| switch_in | switch_out
v |
+-------------+ |
| running | -+
+-------------+
This model is broken, the reason is that a task can be running in the processor without being set as RUNNABLE. Think about a task about to sleep:
1: set_current_state(TASK_UNINTERRUPTIBLE);
2: schedule();
And then imagine an IRQ happening in between the lines one and two, waking the task up. BOOM, the wakeup will happen while the task is running.
Why do we need this model, so?
To test the reactors.
Specification¶
Grapviz Dot file in tools/verification/models/wwnr.dot