1digraph { 2 console_forwarder [label = < <B>console_forwarder</B> >, penwidth = 2] 3 host_console_in [label = "internal/console.in", shape = "rectangle"] 4 host_console_out [label = "internal/console.out", shape = "rectangle"] 5 host_pty [label = "/dev/pty/###", shape = "rectangle"] 6 run_cvd 7 screen 8 user [label = "User CLI"] 9 vmm [label = "crosvm / qemu"] 10 subgraph cluster_android { 11 label = "Android VM" 12 vm_console [label = "/dev/ttyS0", shape = "rectangle"] 13 shell [label = "toybox / sh"] 14 } 15 16 run_cvd -> console_forwarder 17 user -> screen 18 screen -> host_pty -> console_forwarder [dir = "both"] 19 20 console_forwarder -> host_console_out -> vmm [dir = "back"] 21 console_forwarder -> host_console_in -> vmm 22 23 vmm -> vm_console -> shell [dir = "both"] 24} 25