From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yang Hongyang Subject: Re: [PATCH Remus v2 04/10] tools/libxc: introduce DECLARE_HYPERCALL_BUFFER_USER_POINTER Date: Tue, 12 May 2015 15:18:33 +0800 Message-ID: <5551A949.5030009@cn.fujitsu.com> References: <1431077610-3366-1-git-send-email-yanghy@cn.fujitsu.com> <1431077610-3366-5-git-send-email-yanghy@cn.fujitsu.com> <1431345182.8263.38.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1431345182.8263.38.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: wei.liu2@citrix.com, wency@cn.fujitsu.com, andrew.cooper3@citrix.com, yunhong.jiang@intel.com, eddie.dong@intel.com, xen-devel@lists.xen.org, rshriram@cs.ubc.ca, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 05/11/2015 07:53 PM, Ian Campbell wrote: > On Fri, 2015-05-08 at 17:33 +0800, Yang Hongyang wrote: >> Define a user pointer that can access the hypercall buffer data >> Useful when you only need to access the hypercall buffer data > > Can you expand on this please, I think the context is a hypercall buffer > passed as an argument or as a member of a struct. Please describe why > DECLARE_HYPERCALL_BUFFER_ARGUMENT and/or DECLARE_HYPERCALL_BUFFER_SHADOW > are not usable here. There are cases that we only need to use the hypercall buffer data, and do not use the xc_hypercall_buffer_t struct. DECLARE_HYPERCALL_BUFFER_ARGUMENT will only define a xc_hypercall_buffer_t, while DECLARE_HYPERCALL_BUFFER_SHADOW do define a user pointer that can allow us to access the hypercall buffer data but it also define a xc_hypercall_buffer_t that we don't use, the compiler will report arg unused error. The cases for example: In send_all_pages(), we only need to use the haypercall buffer data which is a dirty bitmap, we set the dirty bitmap to all dirty and call send_dirty_pages, we will not use the xc_hypercall_buffer_t and hypercall to retrive the dirty bitmap. In send_some_pages(), we will also only need to use the dirty_bitmap. the retrive dirty bitmap hypercall are done by the caller. > > Ian. > > > . > -- Thanks, Yang.