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