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

Re: [Xen-devel] RFC/Proposal: Partial `libxenctrl` API/ABI stabilisation



On 18/05/15 16:30, Ian Campbell wrote:
> # Major External Consumers of `libxenctrl`
>
> * qemu
> * kexec tools
> * in guest tools e.g. users of `libxenstore`, `libvchan`, and by
>   extension `grant table` and `event channel` functionality. NB:
>   `libxenstore` is already `SSU` or `SSS` (XXX?)
>
> # `libxenctrl` symbols
>
> Gathered by:
>
>     nm tools/libxc/libxenctrl.so | grep ' [Tt] ' | cut -f 3 -d \ | sort -u
>
> `libxenctrl` today exposes many symbols which look to be internal. We
> should consider also reducing that set by using
> `__attribute__((visibility("hidden")))`.

Don't forget libxenguest.so which is built sharing some of the same
source.  I suspect that quite a few of the libxenctrl symbols could move to

>
> The following proposes some functional groupings via some proposed
> split library names. In some cases we may also wish to consider
> replacing an API with one which can be properly maintained going
> forwards. e.g.:
>
> - perhaps replacing domctl's used by qemu with new stable
>   hypercall ABIs and reflecting that in new library APIs.
> - perhaps exposing more constrained versions of some broad interfaces
>   for external users.
>
> XXX: Change `xc_*` namespacing as well as library names?
>
> ## `libxenhypercall`
>
> Core open/close interface, "make a hypercall" functionality, hypercall
> buffers.
>
> All other libraries likely depend on this. Applications do as well in
> order to access open/close interface at least.
>
>     - xc_interface_close
>     - xc_interface_is_fake (???)

This is used when running something wanting libxc on a non xen system. 
e.g. readnotes which invokes the Xen elf parsing on a binary, but
doesn't have any actual hypervisor interaction.

>     - xc_interface_open
>     - xc_hypercall_buffer_array_create
>     - xc_hypercall_buffer_array_destroy

There are surely more than this when it comes to hypercall buffers?

One issue I have found with libxc in general is that a surprising
quantity of code is in static inlines in header files, which ends up
moving into the includee's code. (I had a particular problem with
do_domctl() and the Xen Interface Version for a project I did a while back)

At some point with some copious free time, I want to see about doing an
ioctl to get lowmem pages out of the kernel, which would be large
benifit for longer-running operations using hypercalls.  The logdirty
bitmap for example is large, used frequently during migrate, and are
currently allocated, double bounced, and deallocated on every individual
call.


>
> ## `libxenevtchn`
>
> Interacting with `/dev/xen/evtchn`
>
>     - xc_evtchn_alloc_unbound
>     - xc_evtchn_bind_interdomain
>     - xc_evtchn_bind_unbound_port
>     - xc_evtchn_bind_virq
>     - xc_evtchn_close
>     - xc_evtchn_fd
>     - xc_evtchn_notify
>     - xc_evtchn_open
>     - xc_evtchn_pending
>     - xc_evtchn_reset
>     - xc_evtchn_status
>     - xc_evtchn_unbind
>     - xc_evtchn_unmask
>
> ## `libxengnttab`
>
> Interacting with `/dev/xen/gnt{shr,alloc}`
>
> XXX two libs or one?
>
>     - xc_gntshr_close
>     - xc_gntshr_munmap
>     - xc_gntshr_open
>     - xc_gntshr_share_page_notify
>     - xc_gntshr_share_pages
>     - xc_gnttab_close
>     - xc_gnttab_get_version
>     - xc_gnttab_map_domain_grant_refs
>     - xc_gnttab_map_grant_ref
>     - xc_gnttab_map_grant_ref_notify
>     - xc_gnttab_map_grant_refs
>     - xc_gnttab_map_table_v1
>     - xc_gnttab_map_table_v2
>     - xc_gnttab_munmap
>     - xc_gnttab_op
>     - xc_gnttab_open
>     - xc_gnttab_set_max_grants

One probably, given how small it would be.

~Andrew

_______________________________________________
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®.