[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 4/5] xen: Enforce casting for guest_handle_cast
On 14/06 05:00, Jan Beulich wrote: > >>> On 14.06.12 at 17:39, Jean Guyader <jean.guyader@xxxxxxxxxx> wrote: > > Here are the structs: > > > > typedef struct v4v_ring_data_ent > > > > { > > > > struct v4v_addr ring; > > > > uint16_t flags; > > > > uint16_t pad0; > > > > uint32_t space_required; > > > > uint32_t max_message_size; > > > > } v4v_ring_data_ent_t; > > > > DEFINE_XEN_GUEST_HANDLE (v4v_ring_data_ent_t); > > > > > > > > typedef struct v4v_ring_data > > > > { > > > > uint64_t magic; > > > > uint32_t nent; > > > > uint32_t padding; > > > > uint64_t reserved[4]; > > > > v4v_ring_data_ent_t ring[0]; > > > > } v4v_ring_data_t; > > > > DEFINE_XEN_GUEST_HANDLE (v4v_ring_data_t); > > > > I get a XEN_GUEST_HANDLE(v4v_ring_data_t) as argument of my hypercall and I > > would like to access the ring data inside it which is a XEN_GUEST_HANDLE as > > well. > > > > Here is the code that I use for doing that (with explicte cast in > > guest_handle_cast): > > XEN_GUEST_HANDLE (v4v_ring_data_ent_t) ring_data_ent_hnd; > > XEN_GUEST_HANDLE (uint8_t) slop_hnd = > > guest_handle_cast (ring_data_hnd, uint8_t); > > guest_handle_add_offset (slop_hnd, sizeof (v4v_ring_data_t)); > > ring_data_ent_hnd = > > guest_handle_cast (slop_hnd, v4v_ring_data_ent_t); > > ret = v4v_fill_ring_datas (d, ring_data.nent, ring_data_ent_hnd); > > So you really don't want to add anything (as not being type-safe), > but instead want to get a guest handle representation for accessing > the ring[0] member. That is, I'd introduce a guest_handle_for_field() > for this purpose. Let me see whether I can put something together > for you early next week. > Thanks but I'll follow Tim's advice and get rid of the wrapper structure. I still think having some macro to get a handle from a field can be quite useful in general. Jean _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |