From b1be11c727eddb38956a7da55c7dc19e380e400a Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 16 Sep 2009 16:42:24 +0100 Subject: [PATCH] Add a README file to src/ explaining the directory structure * src/README: New file --- src/README | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/README diff --git a/src/README b/src/README new file mode 100644 index 0000000000..75acbe028b --- /dev/null +++ b/src/README @@ -0,0 +1,56 @@ + libvirt library code README + =========================== + +The directory provides the bulk of the libvirt codebase. Everything +except for the libvirtd daemon and client tools. The build uses a +large number of libtool convenience libraries - one for each child +directory, and then links them together for the final libvirt.so, +although some bits get linked directly to libvirtd daemon instead. + +The files directly in this directory are supporting the public API +entry points & data structures. + +There are two core shared modules to be aware of: + + * util/ - a collection of shared APIs that can be used by any + code. This directory is always in the include path + for all things built + + * conf/ - APIs for parsing / manipulating all the official XML + files used by the public API. This directory is only + in the include path for driver implementation modules + + +Then there are the hypervisor implementations: + + * esx/ - VMware ESX and GSX support using vSphere API over SOAP + * lxc/ - Linux Native Containers + * opennebula/ - Open Nebula using XMLRPC + * openvz/ - OpenVZ containers using cli tools + * phyp/ - IBM Power Hypervisor using CLI tools over SSH + * qemu/ - QEMU / KVM using qemu CLI/monitor + * remote/ - Generic libvirt native RPC client + * test/ - A "mock" driver for testing + * uml/ - User Mode Linux + * vbox/ - Virtual Box using native API + * xen/ - Xen using hypercalls, XenD SEXPR & XenStore + + +Finally some secondary drivers that are shared for several HVs. +Currently these are used by LXC, OpenVZ, QEMU, UML and Xen drivers. +The ESX, OpenNebula, Power Hypervisor, Remote, Test & VirtualBox +drivers all implement the secondary drivers directly + + * interface/ - Host network interface management + * network/ - Virtual NAT networking + * node_device/ - Host device enumeration + * secret/ - Secret management + * security/ - Mandatory access control drivers + * storage/ - Storage management drivers + + +Since both the hypervisor and secondary drivers can be built as +dlopen()able modules, it is *FORBIDDEN* to have build dependencies +between these directories. Drivers are only allowed to depend on +the public API, and the internal APIs in the util/ and conf/ +directories