In Xen source about Hypercall, there is a function called do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE(void) arg). What does 'XEN_GUEST_HANDLE¡® mean£¿ I search the source code and only find the macro. I know it is a pointer to a structure containing an operation. But how does it get its actual parameters?
Also, in 'do_memory_op()' there is a function called memory_exchange(guest_handle_cast(arg, xen_memory_exchange_t)). What does 'guest_handle_cast' mean?
In a word, how does 'memory_exchange' get the actual memory address? Or how does struct 'xen_memory_exchange_t' get assigned?
Thank you !!!