| digraph state_automaton { |
| center = true; |
| size = "7,11"; |
| {node [shape = doublecircle] "any_thread_running"}; |
| {node [shape = circle] "any_thread_running"}; |
| {node [shape = circle] "nested_preempt"}; |
| {node [shape = plaintext, style=invis, label=""] "__init_preempt_irq"}; |
| {node [shape = circle] "preempt_irq"}; |
| {node [shape = circle] "rescheduling"}; |
| "__init_preempt_irq" -> "preempt_irq"; |
| "any_thread_running" [label = "any_thread_running", color = green3]; |
| "any_thread_running" -> "any_thread_running" [ label = "schedule_entry\nirq_entry" ]; |
| "any_thread_running" -> "rescheduling" [ label = "sched_need_resched" ]; |
| "nested_preempt" [label = "nested_preempt"]; |
| "nested_preempt" -> "any_thread_running" [ label = "schedule_entry_preempt\nschedule_entry" ]; |
| "nested_preempt" -> "nested_preempt" [ label = "irq_entry" ]; |
| "nested_preempt" -> "preempt_irq" [ label = "sched_need_resched" ]; |
| "preempt_irq" [label = "preempt_irq"]; |
| "preempt_irq" -> "nested_preempt" [ label = "schedule_entry_preempt\nschedule_entry" ]; |
| "preempt_irq" -> "preempt_irq" [ label = "irq_entry\nsched_need_resched" ]; |
| "rescheduling" [label = "rescheduling"]; |
| "rescheduling" -> "any_thread_running" [ label = "schedule_entry_preempt\nschedule_entry" ]; |
| "rescheduling" -> "preempt_irq" [ label = "irq_entry" ]; |
| "rescheduling" -> "rescheduling" [ label = "sched_need_resched" ]; |
| { rank = min ; |
| "__init_preempt_irq"; |
| "preempt_irq"; |
| } |
| } |