This is a handsome work!
I know that qemu_arm_cpu has a member called socket, which is mainly used for external memory access. The type of this socket is QemuInitiatorSocket. This socket has three access functions, as shown in the code below. I also understand that these three functions are essential for the socket.
The code below is in router.h file
target_socket.register_b_transport(this, &router::b_transport); target_socket.register_transport_dbg(this, &router::transport_dbg); target_socket.register_get_direct_mem_ptr(this, &router::get_direct_mem_ptr);
I would like to ask: at what point should the QEMU CPU call each of these functions? when to call dmi access--get_direct_mem_ptr (which seems create a memory region) ? and when to call just b_transport function?
thanks for your attention.