[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4 11/34] xsplice: Design document



>>> On 15.03.16 at 18:56, <konrad.wilk@xxxxxxxxxx> wrote:
> +### XEN_SYSCTL_XSPLICE_LIST (2)
> +
> +Retrieve an array of abbreviated status and names of payloads that are 
> loaded in the
> +hypervisor.
> +
> +The caller provides:
> +
> + * `version`. Initially (on first hypercall) *MUST* be zero.
> + * `idx` index iterator. On first call *MUST* be zero, subsequent calls 
> varies.
> + * `nr` the max number of entries to populate.
> + * `pad` - *MUST* be zero.
> + * `status` virtual address of where to write `struct xen_xsplice_status`
> +   structures. Caller *MUST* allocate up to `nr` of them.
> + * `name` - virtual address of where to write the unique name of the payload.
> +   Caller *MUST* allocate up to `nr` of them. Each *MUST* be of
> +   **XEN_XSPLICE_NAME_SIZE** size.
> + * `len` - virtual address of where to write the length of each unique name
> +   of the payload. Caller *MUST* allocate up to `nr` of them. Each *MUST* be
> +   of sizeof(uint32_t) (4 bytes).
> +
> +If the hypercall returns an positive number, it is the number (upto `nr`
> +provided to the hypercall) of the payloads returned, along with `nr` updated
> +with the number of remaining payloads, `version` updated (it may be the same
> +across hypercalls - if it varies the data is stale and further calls could
> +fail). The `status`, `name`, and `len`' are updated at their designed index
> +value (`idx`) with the returned value of data.
> +
> +If the hypercall returns -XEN_E2BIG the `nr` is too big and should be
> +lowered.
> +
> +If the hypercall returns an zero value there are no more payloads.
> +
> +Note that due to the asynchronous nature of hypercalls the control domain 
> might
> +have added or removed a number of payloads making this information stale. It 
> is
> +the responsibility of the toolstack to use the `version` field to check
> +between each invocation. if the version differs it should discard the stale
> +data and start from scratch. It is OK for the toolstack to use the new
> +`version` field.
> +
> +The `struct xen_xsplice_status` structure contains an status of payload 
> which includes:
> +
> + * `status` - indicates the current status of the payload:
> +   * *XSPLICE_STATUS_CHECKED*  (1) loaded and the ELF payload safety checks 
> passed.
> +   * *XSPLICE_STATUS_APPLIED* (2) loaded, checked, and applied.
> +   *  No other value is possible.
> + * `rc` - -XEN_EXX type errors encountered while performing the last
> +   XSPLICE_ACTION_* operation. The normal values can be zero or -XEN_EAGAIN 
> which
> +   respectively mean: success or operation in progress. Other values
> +   imply an error occurred. If there is an error in `rc`, `status` will 
> **NOT**
> +   have changed.
> +
> +The structure is as follow:
> +
> +<pre>
> +struct xen_sysctl_xsplice_list {  
> +    uint32_t version;                       /* IN/OUT: Initially *MUST* be 
> zero.  
> +                                               On subsequent calls reuse 
> value.  
> +                                               If varies between calls, we 
> are  
> +                                             * getting stale data. */  
> +    uint32_t idx;                           /* IN/OUT: Index into array. */ 
> +    uint32_t nr;                            /* IN: How many status, names, 
> and len  
> +                                               should fill out.  
> +                                               OUT: How many payloads left. 
> */  

I think there's an ambiguity left in both the description above and
the comments here: With idx required to be zero upon first
invocation (which I'm not clear why that is), which parts of the
three arrays get filled when idx is non-zero: [0, idx) or [nr, nr + idx)?

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.