]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Re-generate website docs
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 21 Nov 2008 12:54:51 +0000 (12:54 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Fri, 21 Nov 2008 12:54:51 +0000 (12:54 +0000)
16 files changed:
ChangeLog
docs/bindings.html
docs/devhelp/libvirt-libvirt.html
docs/devhelp/libvirt-virterror.html
docs/drivers.html
docs/drvlxc.html
docs/drvopenvz.html
docs/drvqemu.html
docs/drvremote.html
docs/drvtest.html
docs/drvuml.html [new file with mode: 0644]
docs/drvxen.html
docs/news.html
docs/news.html.in
docs/sitemap.html
docs/storage.html

index 06821d96b93a4481cac1d912eb3d4dedf9bd5a76..f34d1cbc52635a86263200bc1eeff962cc007933 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Nov 21 12:54:14 BST 2008 Daniel P. Berrange <berrange@redhat.com>
+
+       * docs/*.html: Re-generate website docs for sitemap change
+       with UML driver. Fix syntax error in HTML for news.html.in
+
 Fri Nov 21 12:51:14 BST 2008 Daniel P. Berrange <berrange@redhat.com>
 
        * libvirt-api.xml, libvirt-refs.xml, html/libvirt-libvirt.html,
index 5d7f1ca1a9a5e4fd13e46810b59cc036c83d57bf..e77846cd5b6076f0d9c20b686a088eefef22e767 100644 (file)
         <h1>Bindings for other languages</h1>
         <p>Libvirt comes with bindings to support other languages than
 pure <strong>C</strong>. First the headers embeds the necessary declarations to
-allow direct acces from <strong>C++</strong> code, but also we have bindings for
+allow direct access from <strong>C++</strong> code, but also we have bindings for
 higher level kind of languages:</p>
         <ul><li><strong>Python</strong>: Libvirt comes with direct support for the Python language
      (just make sure you installed the libvirt-python package if not
index 803fde282514a765eb04fbc08b6dee6d070acfc5..8a0ae8273f4e7d32f7a7889c6adae990c05f16a0 100644 (file)
@@ -70,14 +70,16 @@ typedef <a href="libvirt-libvirt.html#virDomainInterfaceStatsStruct">virDomainIn
 typedef <a href="libvirt-libvirt.html#virConnectAuth">virConnectAuth</a> * <a href="#virConnectAuthPtr">virConnectAuthPtr</a>;
 typedef struct _virStorageVolInfo <a href="#virStorageVolInfo">virStorageVolInfo</a>;
 typedef enum <a href="#virSchedParameterType">virSchedParameterType</a>;
+typedef <a href="libvirt-libvirt.html#virStorageVolInfo">virStorageVolInfo</a> * <a href="#virStorageVolInfoPtr">virStorageVolInfoPtr</a>;
 typedef <a href="libvirt-libvirt.html#virConnectCredential">virConnectCredential</a> * <a href="#virConnectCredentialPtr">virConnectCredentialPtr</a>;
 typedef <a href="libvirt-libvirt.html#virStoragePool">virStoragePool</a> * <a href="#virStoragePoolPtr">virStoragePoolPtr</a>;
 typedef <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> * <a href="#virNodeInfoPtr">virNodeInfoPtr</a>;
 typedef <a href="libvirt-libvirt.html#virNetwork">virNetwork</a> * <a href="#virNetworkPtr">virNetworkPtr</a>;
 typedef <a href="libvirt-libvirt.html#virDomainInfo">virDomainInfo</a> * <a href="#virDomainInfoPtr">virDomainInfoPtr</a>;
+typedef struct _virNodeDevice <a href="#virNodeDevice">virNodeDevice</a>;
 typedef <a href="libvirt-libvirt.html#virConnect">virConnect</a> * <a href="#virConnectPtr">virConnectPtr</a>;
 typedef struct _virStorageVol <a href="#virStorageVol">virStorageVol</a>;
-typedef <a href="libvirt-libvirt.html#virStorageVolInfo">virStorageVolInfo</a> * <a href="#virStorageVolInfoPtr">virStorageVolInfoPtr</a>;
+typedef <a href="libvirt-libvirt.html#virNodeDevice">virNodeDevice</a> * <a href="#virNodeDevicePtr">virNodeDevicePtr</a>;
 typedef struct _virSchedParameter <a href="#virSchedParameter">virSchedParameter</a>;
 typedef enum <a href="#virConnectFlags">virConnectFlags</a>;
 typedef enum <a href="#virDomainEventDefinedDetailType">virDomainEventDefinedDetailType</a>;
@@ -111,6 +113,7 @@ int <a href="#virConnectListStoragePools">virConnectListStoragePools</a>    (<a hre
 int    <a href="#virGetVersion">virGetVersion</a>                      (unsigned long * libVer, <br/>                                   const char * type, <br/>                                        unsigned long * typeVer);
 int    <a href="#virNodeGetCellsFreeMemory">virNodeGetCellsFreeMemory</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      unsigned long long * freeMems, <br/>                                    int startCell, <br/>                                    int maxCells);
 int    <a href="#virInitialize">virInitialize</a>                      (void);
+const char *   <a href="#virNodeDeviceGetName">virNodeDeviceGetName</a>        (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
 int    <a href="#virStoragePoolSetAutostart">virStoragePoolSetAutostart</a>    (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      int autostart);
 <a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a>   <a href="#virStorageVolCreateXML">virStorageVolCreateXML</a>    (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                              const char * xmldesc, <br/>                                             unsigned int flags);
 int    <a href="#virConnectDomainEventDeregister">virConnectDomainEventDeregister</a>  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb);
@@ -133,16 +136,19 @@ void      <a href="#virEventRegisterImpl">virEventRegisterImpl</a>                (<a href="libvirt
 <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>   <a href="#virDomainMigrate">virDomainMigrate</a>        (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn, <br/>                                     unsigned long flags, <br/>                                      const char * dname, <br/>                                       const char * uri, <br/>                                         unsigned long bandwidth);
 int    <a href="#virDomainSuspend">virDomainSuspend</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
 int    <a href="#virNetworkCreate">virNetworkCreate</a>                (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
-typedef void <a href="#virEventUpdateHandleFunc">virEventUpdateHandleFunc</a>  (int fd, <br/>                                   int event);
+char * <a href="#virNodeDeviceGetXMLDesc">virNodeDeviceGetXMLDesc</a>          (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/>                                         unsigned int flags);
+typedef void <a href="#virEventUpdateHandleFunc">virEventUpdateHandleFunc</a>  (int watch, <br/>                                        int event);
 int    <a href="#virDomainDestroy">virDomainDestroy</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
 int    <a href="#virConnectNumOfNetworks">virConnectNumOfNetworks</a>          (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
 <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByUUIDString">virStoragePoolLookupByUUIDString</a>        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const char * uuidstr);
 char * <a href="#virDomainGetXMLDesc">virDomainGetXMLDesc</a>          (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      int flags);
 int    <a href="#virStoragePoolGetUUID">virStoragePoolGetUUID</a>              (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      unsigned char * uuid);
+int    <a href="#virNodeDeviceFree">virNodeDeviceFree</a>              (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
 int    <a href="#virStorageVolGetInfo">virStorageVolGetInfo</a>                (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/>                                         <a href="libvirt-libvirt.html#virStorageVolInfoPtr">virStorageVolInfoPtr</a> info);
 int    <a href="#virDomainGetInfo">virDomainGetInfo</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      <a href="libvirt-libvirt.html#virDomainInfoPtr">virDomainInfoPtr</a> info);
 int    <a href="#virNetworkDestroy">virNetworkDestroy</a>              (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
 <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByName">virStoragePoolLookupByName</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const char * name);
+<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolCreateXML">virStoragePoolCreateXML</a>  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                              const char * xmlDesc, <br/>                                             unsigned int flags);
 int    <a href="#virNetworkGetAutostart">virNetworkGetAutostart</a>            (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/>                                   int * autostart);
 char * <a href="#virNetworkGetBridgeName">virNetworkGetBridgeName</a>          (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
 char * <a href="#virStorageVolGetXMLDesc">virStorageVolGetXMLDesc</a>          (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol, <br/>                                         unsigned int flags);
@@ -158,11 +164,13 @@ int       <a href="#virNodeGetInfo">virNodeGetInfo</a>                    (<a href="libvirt-libvirt.htm
 int    <a href="#virNetworkSetAutostart">virNetworkSetAutostart</a>            (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/>                                   int autostart);
 unsigned long  <a href="#virDomainGetMaxMemory">virDomainGetMaxMemory</a>      (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
 int    <a href="#virStoragePoolFree">virStoragePoolFree</a>            (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
+typedef void <a href="#virFreeCallback">virFreeCallback</a>                    (void * opaque);
 <a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkDefineXML">virNetworkDefineXML</a>  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * xml);
+int    <a href="#virNodeDeviceListCaps">virNodeDeviceListCaps</a>              (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/>                                         char ** const names, <br/>                                      int maxnames);
 int    <a href="#virDomainBlockStats">virDomainBlockStats</a>          (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/>                                         const char * path, <br/>                                        <a href="libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a> stats, <br/>                                   size_t size);
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenAuth">virConnectOpenAuth</a>    (const char * name, <br/>                                        <a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> auth, <br/>                                      int flags);
 int    <a href="#virStoragePoolDelete">virStoragePoolDelete</a>                (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      unsigned int flags);
-typedef int <a href="#virEventRemoveHandleFunc">virEventRemoveHandleFunc</a>   (int fd);
+typedef int <a href="#virEventRemoveHandleFunc">virEventRemoveHandleFunc</a>   (int watch);
 const char *   <a href="#virStorageVolGetName">virStorageVolGetName</a>        (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
 int    <a href="#virStoragePoolGetAutostart">virStoragePoolGetAutostart</a>    (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      int * autostart);
 int    <a href="#virDomainGetAutostart">virDomainGetAutostart</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      int * autostart);
@@ -191,9 +199,10 @@ int        <a href="#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a>      (
 int    <a href="#virDomainGetUUID">virDomainGetUUID</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      unsigned char * uuid);
 <a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkCreateXML">virNetworkCreateXML</a>  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * xmlDesc);
 int    <a href="#virDomainGetVcpus">virDomainGetVcpus</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      <a href="libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a> info, <br/>                                    int maxinfo, <br/>                                      unsigned char * cpumaps, <br/>                                  int maplen);
-<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolCreateXML">virStoragePoolCreateXML</a>  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                              const char * xmlDesc, <br/>                                             unsigned int flags);
+<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a>   <a href="#virNodeDeviceLookupByName">virNodeDeviceLookupByName</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const char * name);
 int    <a href="#virStoragePoolGetInfo">virStoragePoolGetInfo</a>              (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      <a href="libvirt-libvirt.html#virStoragePoolInfoPtr">virStoragePoolInfoPtr</a> info);
 int    <a href="#virDomainResume">virDomainResume</a>                  (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
+int    <a href="#virNodeListDevices">virNodeListDevices</a>            (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * cap, <br/>                                         char ** const names, <br/>                                      int maxnames, <br/>                                     unsigned int flags);
 int    <a href="#virStoragePoolRefresh">virStoragePoolRefresh</a>              (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      unsigned int flags);
 int    <a href="#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
 <a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a>   <a href="#virStorageVolLookupByKey">virStorageVolLookupByKey</a>        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const char * key);
@@ -202,7 +211,7 @@ int <a href="#virDomainReboot">virDomainReboot</a>                  (<a href="libvirt-libvirt.h
 int    <a href="#virNetworkGetUUIDString">virNetworkGetUUIDString</a>          (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network, <br/>                                   char * buf);
 <a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a href="#virNetworkLookupByName">virNetworkLookupByName</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * name);
 int    <a href="#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a>                (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
-typedef void <a href="#virEventHandleCallback">virEventHandleCallback</a>              (int fd, <br/>                                   int events, <br/>                                       void * opaque);
+typedef void <a href="#virEventHandleCallback">virEventHandleCallback</a>              (int watch, <br/>                                        int fd, <br/>                                   int events, <br/>                                       void * opaque);
 char * <a href="#virDomainGetSchedulerType">virDomainGetSchedulerType</a>      (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      int * nparams);
 int    <a href="#virDomainDetachDevice">virDomainDetachDevice</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      const char * xml);
 int    <a href="#virStoragePoolNumOfVolumes">virStoragePoolNumOfVolumes</a>    (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
@@ -214,13 +223,15 @@ char *    <a href="#virConnectGetURI">virConnectGetURI</a>                (<a href="libvirt-libvi
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpenReadOnly">virConnectOpenReadOnly</a>    (const char * name);
 int    <a href="#virNetworkFree">virNetworkFree</a>                    (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
 <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByUUID">virStoragePoolLookupByUUID</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const unsigned char * uuid);
-typedef int <a href="#virEventAddHandleFunc">virEventAddHandleFunc</a>         (int fd, <br/>                                   int event, <br/>                                        <a href="libvirt-libvirt.html#virEventHandleCallback">virEventHandleCallback</a> cb, <br/>                                      void * opaque);
+typedef int <a href="#virEventAddHandleFunc">virEventAddHandleFunc</a>         (int fd, <br/>                                   int event, <br/>                                        <a href="libvirt-libvirt.html#virEventHandleCallback">virEventHandleCallback</a> cb, <br/>                                      void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff);
 int    <a href="#virNetworkUndefine">virNetworkUndefine</a>            (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
 int    <a href="#virConnectListDefinedStoragePools">virConnectListDefinedStoragePools</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                              char ** const names, <br/>                                              int maxnames);
 typedef void <a href="#virEventTimeoutCallback">virEventTimeoutCallback</a>            (int timer, <br/>                                        void * opaque);
+int    <a href="#virNodeDeviceNumOfCaps">virNodeDeviceNumOfCaps</a>            (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virNetworkGetConnect">virNetworkGetConnect</a>        (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> net);
 unsigned long long     <a href="#virNodeGetFreeMemory">virNodeGetFreeMemory</a>        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virStorageVolGetConnect">virStorageVolGetConnect</a>  (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
+int    <a href="#virNodeNumOfDevices">virNodeNumOfDevices</a>          (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * cap, <br/>                                         unsigned int flags);
 int    <a href="#virStoragePoolDestroy">virStoragePoolDestroy</a>              (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool);
 <a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> <a href="#virStoragePoolLookupByVolume">virStoragePoolLookupByVolume</a>        (<a href="libvirt-libvirt.html#virStorageVolPtr">virStorageVolPtr</a> vol);
 <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>   <a href="#virDomainLookupByUUID">virDomainLookupByUUID</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const unsigned char * uuid);
@@ -230,13 +241,14 @@ int       <a href="#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a>              (<a href="libvir
 int    <a href="#virDomainGetUUIDString">virDomainGetUUIDString</a>            (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      char * buf);
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virDomainGetConnect">virDomainGetConnect</a>  (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom);
 int    <a href="#virConnectNumOfDefinedStoragePools">virConnectNumOfDefinedStoragePools</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
+const char *   <a href="#virNodeDeviceGetParent">virNodeDeviceGetParent</a>    (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev);
 <a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a href="#virConnectOpen">virConnectOpen</a>            (const char * name);
 <a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a>   <a href="#virDomainCreateXML">virDomainCreateXML</a>    (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * xmlDesc, <br/>                                     unsigned int flags);
 int    <a href="#virDomainSetVcpus">virDomainSetVcpus</a>              (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain, <br/>                                      unsigned int nvcpus);
-int    <a href="#virConnectDomainEventRegister">virConnectDomainEventRegister</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb, <br/>                                        void * opaque);
+int    <a href="#virConnectDomainEventRegister">virConnectDomainEventRegister</a>      (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb, <br/>                                        void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> freecb);
 unsigned int   <a href="#virDomainGetID">virDomainGetID</a>            (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
 int    <a href="#virDomainBlockPeek">virDomainBlockPeek</a>            (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/>                                         const char * path, <br/>                                        unsigned long long offset, <br/>                                        size_t size, <br/>                                      void * buffer, <br/>                                    unsigned int flags);
-typedef int <a href="#virEventAddTimeoutFunc">virEventAddTimeoutFunc</a>               (int timeout, <br/>                                      <a href="libvirt-libvirt.html#virEventTimeoutCallback">virEventTimeoutCallback</a> cb, <br/>                                    void * opaque);
+typedef int <a href="#virEventAddTimeoutFunc">virEventAddTimeoutFunc</a>               (int timeout, <br/>                                      <a href="libvirt-libvirt.html#virEventTimeoutCallback">virEventTimeoutCallback</a> cb, <br/>                                    void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff);
 int    <a href="#virDomainInterfaceStats">virDomainInterfaceStats</a>          (<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom, <br/>                                         const char * path, <br/>                                        <a href="libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a> stats, <br/>                                   size_t size);
 int    <a href="#virConnectListNetworks">virConnectListNetworks</a>            (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      char ** const names, <br/>                                      int maxnames);
 </pre>
@@ -515,6 +527,16 @@ The content of this structure is not made public by the API.
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virNetworkPtr">Typedef </a>virNetworkPtr</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNetwork">virNetwork</a> * virNetworkPtr;
 </pre><p>a <a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> is pointer to a <a href="libvirt-libvirt.html#virNetwork">virNetwork</a> private structure, this is the type used to reference a virtual network in the API.</p>
+</div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDevice">Structure </a>virNodeDevice</h3><pre class="programlisting">struct _virNodeDevice {
+The content of this structure is not made public by the API.
+} virNodeDevice;
+</pre><p/>
+</div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDevicePtr">Typedef </a>virNodeDevicePtr</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNodeDevice">virNodeDevice</a> * virNodeDevicePtr;
+</pre><p>A <a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> is a pointer to a <a href="libvirt-libvirt.html#virNodeDevice">virNodeDevice</a> structure. Get one via virNodeDeviceLookupByKey, virNodeDeviceLookupByName, or virNodeDeviceCreate. Be sure to Call <a href="libvirt-libvirt.html#virNodeDeviceFree">virNodeDeviceFree</a> when done using a <a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> obtained from any of the above functions to avoid leaking memory.</p>
 </div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virNodeInfo">Structure </a>virNodeInfo</h3><pre class="programlisting">struct _virNodeInfo {
@@ -668,37 +690,41 @@ The content of this structure is not made public by the API.
 </pre><p>A callback function to be registered, and called when a domain event occurs</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td><a href="libvirt-libvirt.html#virConnect">virConnect</a> connection</td></tr><tr><td><span class="term"><i><tt>dom</tt></i>:</span></td><td>The domain on which the event occured</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>The specfic <a href="libvirt-libvirt.html#virDomainEventType">virDomainEventType</a> which occured</td></tr><tr><td><span class="term"><i><tt>detail</tt></i>:</span></td><td>event specific detail information</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque user data</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virEventAddHandleFunc"/>Function type virEventAddHandleFunc</h3><pre class="programlisting">int   virEventAddHandleFunc           (int fd, <br/>                                   int event, <br/>                                        <a href="libvirt-libvirt.html#virEventHandleCallback">virEventHandleCallback</a> cb, <br/>                                      void * opaque)<br/>
-</pre><p>Part of the EventImpl, this callback Adds a file handle callback to listen for specific events</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file descriptor to listen on</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>bitset of events on which to fire the callback</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>the callback to be called</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data to pass to the callback</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+        <div class="refsect2" lang="en"><h3><a name="virEventAddHandleFunc"/>Function type virEventAddHandleFunc</h3><pre class="programlisting">int   virEventAddHandleFunc           (int fd, <br/>                                   int event, <br/>                                        <a href="libvirt-libvirt.html#virEventHandleCallback">virEventHandleCallback</a> cb, <br/>                                      void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff)<br/>
+</pre><p>Part of the EventImpl, this callback Adds a file handle callback to listen for specific events. The same file handle can be registered multiple times provided the requested event sets are non-overlapping If the opaque user data requires free'ing when the handle is unregistered, then a 2nd callback can be supplied for this purpose.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file descriptor to listen on</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>bitset of events on which to fire the callback</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>the callback to be called when an event occurrs</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data to pass to the callback</td></tr><tr><td><span class="term"><i><tt>ff</tt></i>:</span></td><td>the callback invoked to free opaque data blob</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a handle watch number to be used for updating and unregistering for events</td></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virEventAddTimeoutFunc"/>Function type virEventAddTimeoutFunc</h3><pre class="programlisting">int virEventAddTimeoutFunc          (int timeout, <br/>                                      <a href="libvirt-libvirt.html#virEventTimeoutCallback">virEventTimeoutCallback</a> cb, <br/>                                    void * opaque)<br/>
-</pre><p>Part of the EventImpl, this user-defined callback handles adding an event timeout.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>timeout</tt></i>:</span></td><td>The timeout to monitor</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>the callback to call when timeout has expired</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data to pass to the callback</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a timer value</td></tr></tbody></table></div></div>
+        <div class="refsect2" lang="en"><h3><a name="virEventAddTimeoutFunc"/>Function type virEventAddTimeoutFunc</h3><pre class="programlisting">int virEventAddTimeoutFunc          (int timeout, <br/>                                      <a href="libvirt-libvirt.html#virEventTimeoutCallback">virEventTimeoutCallback</a> cb, <br/>                                    void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> ff)<br/>
+</pre><p>Part of the EventImpl, this user-defined callback handles adding an event timeout. If the opaque user data requires free'ing when the handle is unregistered, then a 2nd callback can be supplied for this purpose.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>timeout</tt></i>:</span></td><td>The timeout to monitor</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>the callback to call when timeout has expired</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data to pass to the callback</td></tr><tr><td><span class="term"><i><tt>ff</tt></i>:</span></td><td>the callback invoked to free opaque data blob</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a timer value</td></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virEventHandleCallback"/>Function type virEventHandleCallback</h3><pre class="programlisting">void        virEventHandleCallback          (int fd, <br/>                                   int events, <br/>                                       void * opaque)<br/>
-</pre><p>callback for receiving file handle events</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file handle on which the event occurred</td></tr><tr><td><span class="term"><i><tt>events</tt></i>:</span></td><td>bitset of events from <a href="libvirt-libvirt.html#virEventHandleType">virEventHandleType</a> constants</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data registered with handle</td></tr></tbody></table></div></div>
+        <div class="refsect2" lang="en"><h3><a name="virEventHandleCallback"/>Function type virEventHandleCallback</h3><pre class="programlisting">void        virEventHandleCallback          (int watch, <br/>                                        int fd, <br/>                                   int events, <br/>                                       void * opaque)<br/>
+</pre><p>Callback for receiving file handle events. The callback will be invoked once for each event which is pending.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>watch</tt></i>:</span></td><td>watch on which the event occurred</td></tr><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file handle on which the event occurred</td></tr><tr><td><span class="term"><i><tt>events</tt></i>:</span></td><td>bitset of events from <a href="libvirt-libvirt.html#virEventHandleType">virEventHandleType</a> constants</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data registered with handle</td></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virEventRemoveHandleFunc"/>Function type virEventRemoveHandleFunc</h3><pre class="programlisting">int     virEventRemoveHandleFunc        (int fd)<br/>
-</pre><p>Part of the EventImpl, this user-provided callback is notified when an fd is no longer being listened on</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file descriptor to stop listening on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+        <div class="refsect2" lang="en"><h3><a name="virEventRemoveHandleFunc"/>Function type virEventRemoveHandleFunc</h3><pre class="programlisting">int     virEventRemoveHandleFunc        (int watch)<br/>
+</pre><p>Part of the EventImpl, this user-provided callback is notified when an fd is no longer being listened on. If a virEventHandleFreeFunc was supplied when the handle was registered, it will be invoked some time during, or after this function call, when it is safe to release the user data.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>watch</tt></i>:</span></td><td>file descriptor watch to stop listening on</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virEventRemoveTimeoutFunc"/>Function type virEventRemoveTimeoutFunc</h3><pre class="programlisting">int   virEventRemoveTimeoutFunc       (int timer)<br/>
-</pre><p>Part of the EventImpl, this user-defined callback removes a timer</p>
+</pre><p>Part of the EventImpl, this user-defined callback removes a timer If a virEventTimeoutFreeFunc was supplied when the handle was registered, it will be invoked some time during, or after this function call, when it is safe to release the user data.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>timer</tt></i>:</span></td><td>the timer to remove</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virEventTimeoutCallback"/>Function type virEventTimeoutCallback</h3><pre class="programlisting">void      virEventTimeoutCallback         (int timer, <br/>                                        void * opaque)<br/>
 </pre><p>callback for receiving timer events</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>timer</tt></i>:</span></td><td>timer id emitting the event</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>user data registered with handle</td></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virEventUpdateHandleFunc"/>Function type virEventUpdateHandleFunc</h3><pre class="programlisting">void    virEventUpdateHandleFunc        (int fd, <br/>                                   int event)<br/>
+        <div class="refsect2" lang="en"><h3><a name="virEventUpdateHandleFunc"/>Function type virEventUpdateHandleFunc</h3><pre class="programlisting">void    virEventUpdateHandleFunc        (int watch, <br/>                                        int event)<br/>
 </pre><p>Part of the EventImpl, this user-provided callback is notified when events to listen on change</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>fd</tt></i>:</span></td><td>file descriptor to modify</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>new events to listen on</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>watch</tt></i>:</span></td><td>file descriptor watch to modify</td></tr><tr><td><span class="term"><i><tt>event</tt></i>:</span></td><td>new events to listen on</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virEventUpdateTimeoutFunc"/>Function type virEventUpdateTimeoutFunc</h3><pre class="programlisting">void  virEventUpdateTimeoutFunc       (int timer, <br/>                                        int timeout)<br/>
 </pre><p>Part of the EventImpl, this user-defined callback updates an event timeout.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>timer</tt></i>:</span></td><td>the timer to modify</td></tr><tr><td><span class="term"><i><tt>timeout</tt></i>:</span></td><td>the new timeout value</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virFreeCallback"/>Function type virFreeCallback</h3><pre class="programlisting">void      virFreeCallback                 (void * opaque)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td/></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virConnectAuthPtrDefault">Variable </a>virConnectAuthPtrDefault</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a> virConnectAuthPtrDefault;
 </pre><p/>
@@ -712,9 +738,9 @@ The content of this structure is not made public by the API.
 </pre><p>Removes a Domain Event Callback. De-registering for a domain callback will disable delivery of this event type</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div></div>
         <hr/>
-        <div class="refsect2" lang="en"><h3><a name="virConnectDomainEventRegister"/>virConnectDomainEventRegister ()</h3><pre class="programlisting">int      virConnectDomainEventRegister   (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb, <br/>                                        void * opaque)<br/>
+        <div class="refsect2" lang="en"><h3><a name="virConnectDomainEventRegister"/>virConnectDomainEventRegister ()</h3><pre class="programlisting">int      virConnectDomainEventRegister   (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virConnectDomainEventCallback">virConnectDomainEventCallback</a> cb, <br/>                                        void * opaque, <br/>                                    <a href="libvirt-libvirt.html#virFreeCallback">virFreeCallback</a> freecb)<br/>
 </pre><p>Adds a Domain Event Callback. Registering for a domain callback will enable delivery of the events</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the connection</td></tr><tr><td><span class="term"><i><tt>cb</tt></i>:</span></td><td>callback to the function handling domain events</td></tr><tr><td><span class="term"><i><tt>opaque</tt></i>:</span></td><td>opaque data to pass on to the callback</td></tr><tr><td><span class="term"><i><tt>freecb</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 on success, -1 on failure</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virConnectFindStoragePoolSources"/>virConnectFindStoragePoolSources ()</h3><pre class="programlisting">char *     virConnectFindStoragePoolSources        (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                              const char * type, <br/>                                                const char * srcSpec, <br/>                                             unsigned int flags)<br/>
 </pre><p>Talks to a storage backend and attempts to auto-discover the set of available storage pool sources. e.g. For iSCSI this would be a set of iSCSI targets. For NFS this would be a list of exported paths. The srcSpec (optional for some storage pool types, e.g. local ones) is an instance of the storage pool's source element specifying where to look for the pools. srcSpec is not required for some types (e.g., those querying local storage resources only)</p>
@@ -1063,6 +1089,34 @@ The content of this structure is not made public by the API.
         <div class="refsect2" lang="en"><h3><a name="virNetworkUndefine"/>virNetworkUndefine ()</h3><pre class="programlisting">int    virNetworkUndefine              (<a href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network)<br/>
 </pre><p>Undefine a network but does not stop it if it is running</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>network</tt></i>:</span></td><td>pointer to a defined network</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success, -1 in case of error</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceFree"/>virNodeDeviceFree ()</h3><pre class="programlisting">int      virNodeDeviceFree               (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
+</pre><p>Drops a reference to the node device, freeing it if this was the last reference.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>pointer to the node device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the 0 for success, -1 for error.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceGetName"/>virNodeDeviceGetName ()</h3><pre class="programlisting">const char *       virNodeDeviceGetName    (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>the device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the device name.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceGetParent"/>virNodeDeviceGetParent ()</h3><pre class="programlisting">const char *   virNodeDeviceGetParent  (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>the device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the name of the device's parent, or NULL if the device has no parent.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceGetXMLDesc"/>virNodeDeviceGetXMLDesc ()</h3><pre class="programlisting">char *       virNodeDeviceGetXMLDesc         (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/>                                         unsigned int flags)<br/>
+</pre><p>Fetch an XML document describing all aspects of the device.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>pointer to the node device</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags for XML generation (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the XML document, or NULL on error</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceListCaps"/>virNodeDeviceListCaps ()</h3><pre class="programlisting">int      virNodeDeviceListCaps           (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev, <br/>                                         char ** const names, <br/>                                      int maxnames)<br/>
+</pre><p>Lists the names of the capabilities supported by the device.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>the device</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of capability names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of capability names listed in @names.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceLookupByName"/>virNodeDeviceLookupByName ()</h3><pre class="programlisting"><a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a>     virNodeDeviceLookupByName       (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                                      const char * name)<br/>
+</pre><p>Lookup a node device by its name.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>unique device name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a <a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> if found, NULL otherwise.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeDeviceNumOfCaps"/>virNodeDeviceNumOfCaps ()</h3><pre class="programlisting">int    virNodeDeviceNumOfCaps          (<a href="libvirt-libvirt.html#virNodeDevicePtr">virNodeDevicePtr</a> dev)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>dev</tt></i>:</span></td><td>the device</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of capabilities supported by the device.</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virNodeGetCellsFreeMemory"/>virNodeGetCellsFreeMemory ()</h3><pre class="programlisting">int      virNodeGetCellsFreeMemory       (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      unsigned long long * freeMems, <br/>                                    int startCell, <br/>                                    int maxCells)<br/>
 </pre><p>This call returns the amount of free memory in one or more NUMA cells. The @freeMems array must be allocated by the caller and will be filled with the amount of free memory in kilobytes for each cell requested, starting with startCell (in freeMems[0]), up to either (startCell + maxCells), or the number of additional cells in the node, whichever is smaller.</p>
@@ -1075,6 +1129,14 @@ The content of this structure is not made public by the API.
         <div class="refsect2" lang="en"><h3><a name="virNodeGetInfo"/>virNodeGetInfo ()</h3><pre class="programlisting">int    virNodeGetInfo                  (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      <a href="libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a> info)<br/>
 </pre><p>Extract hardware information about the node.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>info</tt></i>:</span></td><td>pointer to a <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a> structure allocated by the user</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of failure.</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeListDevices"/>virNodeListDevices ()</h3><pre class="programlisting">int    virNodeListDevices              (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * cap, <br/>                                         char ** const names, <br/>                                      int maxnames, <br/>                                     unsigned int flags)<br/>
+</pre><p>Collect the list of node devices, and store their names in @names If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>names</tt></i>:</span></td><td>array to collect the list of node device names</td></tr><tr><td><span class="term"><i><tt>maxnames</tt></i>:</span></td><td>size of @names</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices found or -1 in case of error</td></tr></tbody></table></div></div>
+        <hr/>
+        <div class="refsect2" lang="en"><h3><a name="virNodeNumOfDevices"/>virNodeNumOfDevices ()</h3><pre class="programlisting">int  virNodeNumOfDevices             (<a href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/>                                      const char * cap, <br/>                                         unsigned int flags)<br/>
+</pre><p>Provides the number of node devices. If the optional 'cap' argument is non-NULL, then the count will be restricted to devices with the specified capability</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><span class="term"><i><tt>cap</tt></i>:</span></td><td>capability name</td></tr><tr><td><span class="term"><i><tt>flags</tt></i>:</span></td><td>flags (unused, pass 0)</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the number of node devices or -1 in case of error</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="virStoragePoolBuild"/>virStoragePoolBuild ()</h3><pre class="programlisting">int  virStoragePoolBuild             (<a href="libvirt-libvirt.html#virStoragePoolPtr">virStoragePoolPtr</a> pool, <br/>                                      unsigned int flags)<br/>
 </pre><p>Build the underlying storage pool</p>
index 096bd3e4ac166ec75b9d1df8abf39e004e637fae..eeba6604f38cb4dfe17722cc299da58263d87d15 100644 (file)
@@ -100,7 +100,9 @@ void        <a href="#virConnResetLastError">virConnResetLastError</a>              (<a href="libvi
     <a name="VIR_FROM_LXC">VIR_FROM_LXC</a> = 17 /* Error from Linux Container driver */
     <a name="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> = 18 /* Error from storage driver */
     <a name="VIR_FROM_NETWORK">VIR_FROM_NETWORK</a> = 19 /* Error from network config */
-    <a name="VIR_FROM_DOMAIN">VIR_FROM_DOMAIN</a> = 20 /*  Error from domain config */
+    <a name="VIR_FROM_DOMAIN">VIR_FROM_DOMAIN</a> = 20 /* Error from domain config */
+    <a name="VIR_FROM_UML">VIR_FROM_UML</a> = 21 /* Error at the UML driver */
+    <a name="VIR_FROM_NODEDEV">VIR_FROM_NODEDEV</a> = 22 /*  Error from node device monitor */
 };
 </pre><p/>
 </div>
@@ -164,7 +166,10 @@ void       <a href="#virConnResetLastError">virConnResetLastError</a>              (<a href="libvi
     <a name="VIR_ERR_INVALID_STORAGE_VOL">VIR_ERR_INVALID_STORAGE_VOL</a> = 47 /* invalid storage vol object */
     <a name="VIR_WAR_NO_STORAGE">VIR_WAR_NO_STORAGE</a> = 48 /* failed to start storage */
     <a name="VIR_ERR_NO_STORAGE_POOL">VIR_ERR_NO_STORAGE_POOL</a> = 49 /* storage pool not found */
-    <a name="VIR_ERR_NO_STORAGE_VOL">VIR_ERR_NO_STORAGE_VOL</a> = 50 /*  storage pool not found */
+    <a name="VIR_ERR_NO_STORAGE_VOL">VIR_ERR_NO_STORAGE_VOL</a> = 50 /* storage pool not found */
+    <a name="VIR_WAR_NO_NODE">VIR_WAR_NO_NODE</a> = 51 /* failed to start node driver */
+    <a name="VIR_ERR_INVALID_NODE_DEVICE">VIR_ERR_INVALID_NODE_DEVICE</a> = 52 /* invalid node device object */
+    <a name="VIR_ERR_NO_NODE_DEVICE">VIR_ERR_NO_NODE_DEVICE</a> = 53 /*  node device not found */
 };
 </pre><p/>
 </div>
index cd0c380dd607ebce1046ce64e8fa3ff3debb5fbd..fded3f67d31a6c037b62589001b9f1f5049b7df1 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index 63a42e08b9dcdaa8ff4b25e74f083cf6edf8c1f7..c804b35fbfbbbed72ace0d404a134e88a1f59fbd 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index 58cb34796daa57497174b5797ebc74bb186a02cd..aae268974cc492a630872390b75f2a4ad70499a8 100644 (file)
                         <div>
                           <span class="active">OpenVZ</span>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index dcf88b032d7a816f5d040f335ae63d9b360b3945..32d1258a7962482a705e1222d216ee5a87dc7614 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index 129fba18fa8829b125a11e4ff932b8918e01e48a..5c9f53faebe7d6c4b321b17e7dd3d94f856e57f1 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index 32b9db0a4f5242c21f2edc0171471373ae7c0027..01edf3368f3295f742fc5867c1ad1c5dcd1433e5 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
diff --git a/docs/drvuml.html b/docs/drvuml.html
new file mode 100644 (file)
index 0000000..032343c
--- /dev/null
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+        This file is autogenerated from drvuml.html.in
+        Do not edit this file. Changes will be lost.
+      -->
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+    <link rel="stylesheet" type="text/css" href="main.css" />
+    <link rel="SHORTCUT ICON" href="32favicon.png" />
+    <title>libvirt: User Mode Linux driver</title>
+    <meta name="description" content="libvirt, virtualization, virtualization API" />
+  </head>
+  <body>
+    <div id="header">
+      <div id="headerLogo"></div>
+      <div id="headerSearch">
+        <form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><div>
+            <input id="query" name="query" type="text" size="12" value="" />
+            <input id="submit" name="submit" type="submit" value="Search" />
+          </div></form>
+      </div>
+    </div>
+    <div id="body">
+      <div id="menu">
+        <ul class="l0"><li>
+            <div>
+              <a title="Front page of the libvirt website" class="inactive" href="index.html">Home</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Details of new features and bugs fixed in each release" class="inactive" href="news.html">News</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Get the latest source releases, binary builds and get access to the source repository" class="inactive" href="downloads.html">Downloads</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Information for users, administrators and developers" class="active" href="docs.html">Documentation</a>
+              <ul class="l1"><li>
+                  <div>
+                    <a title="Information about deploying and using libvirt" class="inactive" href="deployment.html">Deployment</a>
+                  </div>
+                </li><li>
+                  <div>
+                    <a title="Overview of the logical subsystems in the libvirt API" class="inactive" href="intro.html">Architecture</a>
+                  </div>
+                </li><li>
+                  <div>
+                    <a title="Description of the XML formats used in libvirt" class="inactive" href="format.html">XML format</a>
+                  </div>
+                </li><li>
+                  <div>
+                    <a title="Hypervisor specific driver information" class="active" href="drivers.html">Drivers</a>
+                    <ul class="l2"><li>
+                        <div>
+                          <a title="Driver the Xen hypervisor" class="inactive" href="drvxen.html">Xen</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for QEMU, KQEMU, KVM and Xenner" class="inactive" href="drvqemu.html">QEMU / KVM</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the Linux native container API" class="inactive" href="drvlxc.html">Linux Container</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Psuedo-driver simulating APIs in memory for test suites" class="inactive" href="drvtest.html">Test</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver providing secure remote to the libvirt APIs" class="inactive" href="drvremote.html">Remote</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
+                        </div>
+                      </li><li>
+                        <div>
+                          <span class="active">UML</span>
+                        </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
+                        </div>
+                      </li></ul>
+                  </div>
+                </li><li>
+                  <div>
+                    <a title="Reference manual for the C public API" class="inactive" href="html/index.html">API reference</a>
+                  </div>
+                </li><li>
+                  <div>
+                    <a title="Bindings of the libvirt API for other languages" class="inactive" href="bindings.html">Language bindings</a>
+                  </div>
+                </li></ul>
+            </div>
+          </li><li>
+            <div>
+              <a title="User contributed content" class="inactive" href="http://wiki.libvirt.org">Wiki</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Frequently asked questions" class="inactive" href="FAQ.html">FAQ</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="How and where to report bugs and request features" class="inactive" href="bugs.html">Bug reports</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="How to contact the developers via email and IRC" class="inactive" href="contact.html">Contact</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Miscellaneous links of interest related to libvirt" class="inactive" href="relatedlinks.html">Related Links</a>
+            </div>
+          </li><li>
+            <div>
+              <a title="Overview of all content on the website" class="inactive" href="sitemap.html">Sitemap</a>
+            </div>
+          </li></ul>
+      </div>
+      <div id="content">
+        <h1>User Mode Linux driver</h1>
+        <p>
+    The UML driver for libvirt allows use and management of paravirtualized
+    guests built for User Mode Linux. UML requires no special support in
+    the host kernel, so can be used by any user of any linux system, provided
+    they have enough free RAM for their guest's needs, though there are
+    certain restrictions on network connectivity unless the adminstrator
+    has pre-created TAP devices.
+    </p>
+        <h2>Connections to UML driver</h2>
+        <p>
+    The libvirt UML driver follows the QEMU driver in providing two
+    types of connection. There is one privileged instance per host,
+    which runs as root. This is called the "system" instance, and allows
+    full use of all host resources. Then, there is a per-user unprivileged
+    "session", instance. This has more restricted capabilities, and may
+    require the host administrator to setup certain resources ahead of
+    time to allow full integration with the network. Example connection
+    URIs are
+    </p>
+        <pre>
+    uml:///system                        (local access, system instance)
+    uml:///session                       (local access, session instance)
+    uml://example.com/system             (remote access, TLS/x509)
+    uml+tcp://example.com/system         (remote access, SASl/Kerberos)
+    uml+ssh://root@example.com/system    (remote access, SSH tunnelled)
+    </pre>
+        <h2>Example XML configuration</h2>
+        <p>
+      User mode Linux driver only supports directly kernel boot at
+      this time. A future driver enhancement may allow a paravirt
+      bootloader in a similar style to Xen's pygrub. For now though,
+      the UML kernel must be stored on the host and referenced
+      explicitly in the "os" element. Since UML is a paravirtualized
+      technology, the kernel "type" is set to "uml"
+    </p>
+        <p>
+      There is not yet support for networking in the driver, but
+      disks can be specified in the usual libvirt manner. The main
+      variation is the target device naming scheme "ubd0", and
+      bus type of "uml".
+    </p>
+        <p>
+      Once booted the primary console is connected toa PTY, and
+      thus accessible with "virsh console" or equivalent tools
+    </p>
+        <pre>
+&lt;domain type='uml'&gt;
+  &lt;name&gt;demo&lt;/name&gt;
+  &lt;uuid&gt;b4433fc2-a22e-ffb3-0a3d-9c173b395800&lt;/uuid&gt;
+  &lt;memory&gt;500000&lt;/memory&gt;
+  &lt;currentMemory&gt;500000&lt;/currentMemory&gt;
+  &lt;vcpu&gt;1&lt;/vcpu&gt;
+  &lt;os&gt;
+    &lt;type arch='x86_64'&gt;uml&lt;/type&gt;
+    &lt;kernel&gt;/home/berrange/linux-uml-2.6.26-x86_64&lt;/kernel&gt;
+  &lt;/os&gt;
+  &lt;devices&gt;
+    &lt;disk type='file' device='disk'&gt;
+      &lt;source file='/home/berrange/FedoraCore6-AMD64-root_fs'/&gt;
+      &lt;target dev='ubd0' bus='uml'/&gt;
+    &lt;/disk&gt;
+    &lt;console type='pty'/&gt;
+  &lt;/devices&gt;
+&lt;/domain&gt;
+    </pre>
+      </div>
+    </div>
+    <div id="footer">
+      <p id="sponsor">
+           Sponsored by:<br /><a href="http://et.redhat.com/"><img src="et.png" alt="Project sponsored by Red Hat Emerging Technology" /></a></p>
+    </div>
+  </body>
+</html>
index c87d9597f387e00b0b5713d200a3ecca8d63ca07..17d4a71e196371567e8cb3e355d71895e0166387 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <a title="Driver for the storage management APIs" class="inactive" href="storage.html">Storage</a>
index 87824273bb4423c265773a5ab80cee2f37261d60..e9260abd5453c5fa43412224a6cd05b1e3a949b9 100644 (file)
@@ -82,7 +82,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           reading vncdisplay from xend domain (Cole Robinson), segfault in
           OpenVZ (Evgeniy Sokolov), fix parsing of pool without a source
           (Chris Lalancette and Daniel Berrange)</li><li>Improvements: add storage disk volume delete (Cole Robinson),
-          KVM dynamic max CPU detection (Guido Günther), spec file improvement
+          KVM dynamic max CPU detection (Guido Günther), spec file improvement
           for minimal builds (Ben Guthro), improved error message in XM
           configuration module (Richard Jones), network config in OpenVZ
           support (Evgeniy Sokolov), enable stopping a pool in logical
@@ -94,7 +94,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           unified XML domain and network parsing for all drivers (Daniel
           Berrange), OpenVZ features improvements (Evgeniy Sokolov),
           OpenVZ and Linux containers support now default, USB device
-          passthrough for QEmu/KVM (Guido Günther), storage pool source
+          passthrough for QEmu/KVM (Guido Günther), storage pool source
           discovery (David Lively)</li><li>Portability: fixes for MinGW (Atsushi SAKAI and Daniel Berrange),
           detection of xen lib improvement (David Lively),
           storage backend portability for SLES (David Lively),
@@ -102,9 +102,9 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           fix build failures on RHEL4, lot of MinGW portability fixes (Atsushi
           SAKAI and Daniel Berrange), HTML generation fix, -lpthread explicit
           linking when needed (Jim Meyering)</li><li>Documentation: various typo fixes (Anton Protopopov, Toth
-          István, Atsushi SAKAI, Nguyen Anh Quynh),
+          István, Atsushi SAKAI, Nguyen Anh Quynh),
           Java bindings docs, remove Xen centric
-          comments (Guido Günther), various typo in comments (Chris
+          comments (Guido Günther), various typo in comments (Chris
           Lalancette), docs and API comments fixes (Charles Duffy),
           how to contribute to open source link (Richard Jones),
           memory unit fixups (matthew chan)</li><li>Bug fixes: memory leaks and testing for OOM (Daniel Berrange),
@@ -113,14 +113,14 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           in QEmu/KVM (Daniel Berrange), fix OpenVZ probe function (Evgeniy
           Sokolov), ID related lookup fixes in OpenVZ (Evgeniy Sokolov),
           pool cration for netfs (Cole Robinson), check for migrate support
-          with QEmu (Guido Günther), check against double create with QEmu
-          (Guido Günther), broken open failure detection in QEmu (Guido
-          Günther), UUID string conversions in QEmu (Guido Günther),
+          with QEmu (Guido Günther), check against double create with QEmu
+          (Guido Günther), broken open failure detection in QEmu (Guido
+          Günther), UUID string conversions in QEmu (Guido Günther),
           various small cleanup and bug fixes (Daniel Berrange), ID
           related fixes in the test driver (Daniel Berrange), better error
           reporting on XML parsing (Daniel Berrange), empty CD-ROM source
           device section (Chris Lalancette), avoid crashes for interface
-          without a name in QEmu (Guido Günther), provide the real
+          without a name in QEmu (Guido Günther), provide the real
           vncport (Charles Duffy), fix forward delay (Daniel Berrange),
           new VM state is initialized to be SHUTOFF (Daniel Berrange),
           virsh attach-disk bug fixes (Chris Lalancette), veth clash
@@ -151,7 +151,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           (Daniel Berrange), virsh "edit" command (Richard Jones), save
           UUID of OpenVZ domains (Evgeniy Sokolov), improve xen blocks
           statistics (Chris Lalancette), gnulib updates (Jim Meyering),
-          allow to add disk as USB devices (Guido Günther), LXC container
+          allow to add disk as USB devices (Guido Günther), LXC container
           process should survive libvirtd restarts (Daniel Berrange), allow
           to define static host domain configs, number of CPU used by
           OpenVZ domains (Evgeniy Sokolov), private root fs for LXC (Daniel
index 8b7fdfac1aea3329daafb16ad66c6dcaf7a3c2f7..430efee64571c8fb2abb8865b6a87705ac094904 100644 (file)
@@ -24,7 +24,6 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
           case (Daniel Berrange), various strings and space cleanups (Daniel
           Berrange), structure initialization cleanup (Chris Lalancette)</li>
     </ul>
-    </li>
     <h3>0.4.5: Sep 8 2008</h3>
     <ul>
       <li>New features: NETNS support for Linux containers (Dan Smith),
index 1624205f32b623303361c77fa3e3dcfaebc93f46..c74e116aa16418ddfedc908dc299c03f73759141 100644 (file)
               </li><li>
                 <a href="drvopenvz.html">OpenVZ</a>
                 <span>Driver for the OpenVZ container technology</span>
+              </li><li>
+                <a href="drvuml.html">UML</a>
+                <span>Driver for the User Mode Linux technology</span>
               </li><li>
                 <a href="storage.html">Storage</a>
                 <span>Driver for the storage management APIs</span>
index d9d62f7353366301949070a2add3573726022103..cec94260fbb86d59a4effb93c48768c62d2c9966 100644 (file)
                         <div>
                           <a title="Driver for the OpenVZ container technology" class="inactive" href="drvopenvz.html">OpenVZ</a>
                         </div>
+                      </li><li>
+                        <div>
+                          <a title="Driver for the User Mode Linux technology" class="inactive" href="drvuml.html">UML</a>
+                        </div>
                       </li><li>
                         <div>
                           <span class="active">Storage</span>