digraph state_automaton { center = true; size = "7,11"; {node [shape = circle] "idle"}; {node [shape = plaintext, style=invis, label=""] "__init_ready"}; {node [shape = doublecircle] "ready"}; {node [shape = circle] "ready"}; {node [shape = circle] "running"}; {node [shape = circle] "sleeping"}; {node [shape = circle] "throttled"}; "__init_ready" -> "ready"; "idle" [label = "idle"]; "idle" -> "idle" [ label = "dl_server_idle" ]; "idle" -> "ready" [ label = "dl_replenish;reset(clk)" ]; "idle" -> "running" [ label = "sched_switch_in" ]; "idle" -> "sleeping" [ label = "dl_server_stop" ]; "idle" -> "throttled" [ label = "dl_throttle" ]; "ready" [label = "ready\nclk < DEADLINE_NS()", color = green3]; "ready" -> "idle" [ label = "dl_server_idle" ]; "ready" -> "ready" [ label = "sched_wakeup\ndl_replenish;reset(clk)" ]; "ready" -> "running" [ label = "sched_switch_in" ]; "ready" -> "sleeping" [ label = "dl_server_stop" ]; "ready" -> "throttled" [ label = "dl_throttle;is_defer == 1" ]; "running" [label = "running\nclk < DEADLINE_NS()"]; "running" -> "idle" [ label = "dl_server_idle" ]; "running" -> "running" [ label = "dl_replenish;reset(clk)\nsched_switch_in\nsched_wakeup" ]; "running" -> "sleeping" [ label = "sched_switch_suspend\ndl_server_stop" ]; "running" -> "throttled" [ label = "dl_throttle" ]; "sleeping" [label = "sleeping"]; "sleeping" -> "ready" [ label = "sched_wakeup\ndl_replenish;reset(clk)" ]; "sleeping" -> "running" [ label = "sched_switch_in" ]; "sleeping" -> "sleeping" [ label = "dl_server_stop\ndl_server_idle" ]; "sleeping" -> "throttled" [ label = "dl_throttle;is_constr_dl == 1 || is_defer == 1" ]; "throttled" [label = "throttled"]; "throttled" -> "ready" [ label = "dl_replenish;reset(clk)" ]; "throttled" -> "throttled" [ label = "sched_switch_suspend\nsched_wakeup\ndl_server_idle\ndl_throttle" ]; { rank = min ; "__init_ready"; "ready"; } }