libvirt/src/vbox
Daniel P. Berrange 88a9b382c6 Introduce a virDomainOpenConsole API
To enable virsh console (or equivalent) to be used remotely
it is necessary to provide remote access to the /dev/pts/XXX
pseudo-TTY associated with the console/serial/parallel device
in the guest. The virStream API provide a bi-directional I/O
stream capability that can be used for this purpose. This
patch thus introduces a virDomainOpenConsole API that uses
the stream APIs.

* src/libvirt.c, src/libvirt_public.syms,
  include/libvirt/libvirt.h.in, src/driver.h: Define the
  new virDomainOpenConsole API
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
  src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
  src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
  src/remote/remote_driver.c, src/test/test_driver.c,
  src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
  src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub
  API entry point
2010-11-11 16:02:41 +00:00
..
README integration of the VirtualBox support 2009-04-17 16:09:07 +00:00
vbox_CAPI_v2_2.h build: silence cppi warning, clarify vbox headers 2010-05-27 17:00:39 -06:00
vbox_CAPI_v3_0.h build: silence cppi warning, clarify vbox headers 2010-05-27 17:00:39 -06:00
vbox_CAPI_v3_1.h build: silence cppi warning, clarify vbox headers 2010-05-27 17:00:39 -06:00
vbox_CAPI_v3_2.h build: silence cppi warning, clarify vbox headers 2010-05-27 17:00:39 -06:00
vbox_driver.c Support for VirtualBox version 3.2 2010-05-27 01:28:21 +02:00
vbox_driver.h build: consistently indent preprocessor directives 2010-03-09 19:22:28 +01:00
vbox_tmpl.c Introduce a virDomainOpenConsole API 2010-11-11 16:02:41 +00:00
vbox_V2_2.c integration of the VirtualBox support 2009-04-17 16:09:07 +00:00
vbox_V3_0.c Add support for VBox 3 and event callbacks on vbox 2009-07-24 18:12:16 +02:00
vbox_V3_1.c vbox: Add support for version 3.1 2009-12-04 14:49:45 +01:00
vbox_V3_2.c Support for VirtualBox version 3.2 2010-05-27 01:28:21 +02:00
vbox_XPCOMCGlue.c vbox: Don't warn when the linker search path doesn't contain VBoxXPCOMC.so 2010-10-29 16:33:31 +02:00
vbox_XPCOMCGlue.h vbox: Stop hardcoding a single path for VBoxXPCOMC.so 2010-10-29 15:50:38 +02:00

    Explanation about the how multi-version support
    for VirtualBox libvirt driver is implemented.

Since VirtualBox adds multiple new features for each release, it is but
natural that the C API which VirtualBox exposes is volatile across
versions and thus needs a good mechanism to handle multiple versions
during runtime. The solution was something like this:

Firstly the file structure is as below:

vbox_CAPI_v2_2.h
vbox_XPCOMCGlue.h
vbox_XPCOMCGlue.c
These files are C API/glue code files directly taken from the
VirtualBox OSE source and is needed for C API to work as expected.

vbox_driver.h
vbox_driver.c
These files have the main logic for registering the virtualbox driver
with libvirt.

vbox_V2_2.c
The file which has version dependent changes and includes the template
file for given below for all of its functionality.

vbox_tmpl.c
The file where all the real driver implementation code exists.

Now there would be a vbox_V*.c file (for eg: vbox_V2_2.c for V2.2) for
each major virtualbox version which would do some preprocessor magic
and include the template file (vbox_tmpl.c) in it for the functionality
it offers.