On Mon, Apr 26, 2010 at 11:03 AM, Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote:
> On 26/04/2010 03:32, "Tej" <bewith.tej@xxxxxxxxx> wrote:
>
>> Now passing the list_head from kernel using hypercall. Now how do I
>> copy the element between kernel and hypervisor.
>>
>> 1. copy_from_guest(hyp_list_head, arg, 1) or
>> copy_from_guest(hyp_list_head, arg, <num_of_elements_list>)
>> 2. copy_to_guest(arg, hyp_list_head, 1) or copy_to_guest(arg,
>> hyp_list_head, <num of element in list>)
>
> The first of these. Copy_{to,from}_guest can copy arrays of structures, but
> since this is a linked structure you'd have to do the copy one element at a
> time.
you mean to say, in hypervisor space copy first element using
copy_from_guest(hyp_list_head, arg, 1), extract the next address from
it and then copy again the next element using
"copy_from_guest(hyp_list_head->next, arg->next, 1)" ???
>
>> 2nd question:
>> I did first one, but first element of list was not accessible in
>> hypervisor space, why?
>
> Well, if you are really only copying the list_head, the above should work.
Yes, I have carried out the sample test, by allocating small struct
linked list and then passing between hypervisor and kernel
copy_from_guest(hyp_list_head, arg, 1) is working correctly.
But my actial code is not working. Ok let me put some more effort, if
not I will push the code for review.
Thanks for your help
>
> -- Keir
>
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|