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

Re: [Xen-devel] [PATCH XEN v5 13/23] tools: Refactor foreign memory mapping into libxenforeignmemory

Ian Campbell writes ("[PATCH XEN v5 13/23] tools: Refactor foreign memory 
mapping into libxenforeignmemory"):
> libxenforeignmemory will provide a stable API and ABI for mapping
> foreign domain memory (subject to appropriate privileges).
> The new library exposes an interface equivalent to
> xc_map_foreign_memory_bulk, which all the other
> xc_map_foreign_memory_* functions (which remain in libxc) are
> implemented in terms of.
> diff --git a/tools/libs/foreignmemory/include/xenforeignmemory.h 
> b/tools/libs/foreignmemory/include/xenforeignmemory.h

> +/*
> + * Return a handle onto the hypercall driver.  Logs errors.
> + */
> +xenforeignmemory_handle *xenforeignmemory_open(xentoollog_logger *logger,
> +                                               unsigned open_flags);

`onto the foreign memory driver'.

This file should probably say something about fork().  Perhaps just a
refernce to the rules in the grant map driver.

> +/*
> + * Maps a range within one domain to a local address range.  Mappings
> + * should be unmapped with munmap and should follow the same rules as mmap
> + * regarding page alignment.
> + *
> + * prot is as for mmap(2).
> + *
> + * Can partially succeed. When a page cannot be mapped, its respective
> + * field in @err is set to the corresponding errno value.
> + *
> + * Returns NULL if no pages can be mapped.
> +void *xenforeignmemory_map(xenforeignmemory_handle *fmem, uint32_t dom,
> +                           int prot, const xen_pfn_t *arr, int *err,
> +                           unsigned int num);

If it returns NULL, will all of *err be filled with errno values ?
Ie is all of err[] always written ?

Does this function ever set errno ?

I would write `int err_out[num]' in the prototype which is a bit
clearer about the semantics.

This API invites callers to fail to notice partial failures.

How about permitting err==NULL to mean `on partial failure, unmap
everything and return NULL setting errno' ?


Xen-devel mailing list



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