X-Git-Url: http://git.annexia.org/?p=virt-top.git;a=blobdiff_plain;f=libvirt%2Flibvirt_c_oneoffs.c;h=5df783e0d076cdaf631bec540c54e23394d88c3b;hp=27f917da81c2d5cf6d1297e46045db1295f7c31f;hb=f9d99e63272520c19bddc9e4b47731d57e5658e2;hpb=b6098f4c7419486227cbe2112904cbc9d58ed787 diff --git a/libvirt/libvirt_c_oneoffs.c b/libvirt/libvirt_c_oneoffs.c index 27f917d..5df783e 100644 --- a/libvirt/libvirt_c_oneoffs.c +++ b/libvirt/libvirt_c_oneoffs.c @@ -19,56 +19,6 @@ /* Please read libvirt/README file. */ -#ifdef HAVE_WEAK_SYMBOLS -#ifdef HAVE_VIRDOMAINBLOCKSTATS -extern int virDomainBlockStats (virDomainPtr dom, - const char *path, - virDomainBlockStatsPtr stats, - size_t size) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRDOMAINGETSCHEDULERPARAMETERS -extern int virDomainGetSchedulerParameters (virDomainPtr domain, - virSchedParameterPtr params, - int *nparams) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRDOMAINGETSCHEDULERTYPE -extern char *virDomainGetSchedulerType(virDomainPtr domain, - int *nparams) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRDOMAININTERFACESTATS -extern int virDomainInterfaceStats (virDomainPtr dom, - const char *path, - virDomainInterfaceStatsPtr stats, - size_t size) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRDOMAINMIGRATE -extern virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn, - unsigned long flags, const char *dname, - const char *uri, unsigned long bandwidth) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRDOMAINSETSCHEDULERPARAMETERS -extern int virDomainSetSchedulerParameters (virDomainPtr domain, - virSchedParameterPtr params, - int nparams) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRNODEGETFREEMEMORY -extern unsigned long long virNodeGetFreeMemory (virConnectPtr conn) - __attribute__((weak)); -#endif -#ifdef HAVE_VIRNODEGETCELLSFREEMEMORY -extern int virNodeGetCellsFreeMemory (virConnectPtr conn, - unsigned long long *freeMems, - int startCell, int maxCells) - __attribute__((weak)); -#endif -#endif /* HAVE_WEAK_SYMBOLS */ - /*----------------------------------------------------------------------*/ CAMLprim value @@ -127,22 +77,6 @@ ocaml_libvirt_connect_open_readonly (value namev, value unit) } CAMLprim value -ocaml_libvirt_connect_close (value connv) -{ - CAMLparam1 (connv); - virConnectPtr conn = Connect_val (connv); - int r; - - NONBLOCKING (r = virConnectClose (conn)); - CHECK_ERROR (r == -1, conn, "virConnectClose"); - - /* So that we don't double-free in the finalizer: */ - Connect_val (connv) = NULL; - - CAMLreturn (Val_unit); -} - -CAMLprim value ocaml_libvirt_connect_get_version (value connv) { CAMLparam1 (connv); @@ -195,6 +129,13 @@ ocaml_libvirt_connect_get_node_info (value connv) CAMLreturn (rv); } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRNODEGETFREEMEMORY +extern unsigned long long virNodeGetFreeMemory (virConnectPtr conn) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_connect_node_get_free_memory (value connv) { @@ -215,6 +156,15 @@ ocaml_libvirt_connect_node_get_free_memory (value connv) #endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRNODEGETCELLSFREEMEMORY +extern int virNodeGetCellsFreeMemory (virConnectPtr conn, + unsigned long long *freeMems, + int startCell, int maxCells) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_connect_node_get_cells_free_memory (value connv, value startv, value maxv) @@ -245,132 +195,6 @@ ocaml_libvirt_connect_node_get_cells_free_memory (value connv, } CAMLprim value -ocaml_libvirt_domain_create_linux (value connv, value xmlv) -{ - CAMLparam2 (connv, xmlv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *xml = String_val (xmlv); - virDomainPtr r; - - NONBLOCKING (r = virDomainCreateLinux (conn, xml, 0)); - CHECK_ERROR (!r, conn, "virDomainCreateLinux"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - -CAMLprim value -ocaml_libvirt_domain_lookup_by_id (value connv, value iv) -{ - CAMLparam2 (connv, iv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - int i = Int_val (iv); - virDomainPtr r; - - NONBLOCKING (r = virDomainLookupByID (conn, i)); - CHECK_ERROR (!r, conn, "virDomainLookupByID"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - -CAMLprim value -ocaml_libvirt_domain_lookup_by_uuid (value connv, value uuidv) -{ - CAMLparam2 (connv, uuidv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *uuid = String_val (uuidv); - virDomainPtr r; - - NONBLOCKING (r = virDomainLookupByUUID (conn, (unsigned char *) uuid)); - CHECK_ERROR (!r, conn, "virDomainLookupByUUID"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - -CAMLprim value -ocaml_libvirt_domain_destroy (value domv) -{ - CAMLparam1 (domv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - int r; - - NONBLOCKING (r = virDomainDestroy (dom)); - CHECK_ERROR (r == -1, conn, "virDomainDestroy"); - - /* So that we don't double-free in the finalizer: */ - Domain_val (domv) = NULL; - - CAMLreturn (Val_unit); -} - -CAMLprim value -ocaml_libvirt_domain_free (value domv) -{ - CAMLparam1 (domv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - int r; - - NONBLOCKING (r = virDomainFree (dom)); - CHECK_ERROR (r == -1, conn, "virDomainFree"); - - /* So that we don't double-free in the finalizer: */ - Domain_val (domv) = NULL; - - CAMLreturn (Val_unit); -} - -CAMLprim value -ocaml_libvirt_domain_save (value domv, value pathv) -{ - CAMLparam2 (domv, pathv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - char *path = String_val (pathv); - int r; - - NONBLOCKING (r = virDomainSave (dom, path)); - CHECK_ERROR (r == -1, conn, "virDomainSave"); - - CAMLreturn (Val_unit); -} - -CAMLprim value -ocaml_libvirt_domain_restore (value connv, value pathv) -{ - CAMLparam2 (connv, pathv); - virConnectPtr conn = Connect_val (connv); - char *path = String_val (pathv); - int r; - - NONBLOCKING (r = virDomainRestore (conn, path)); - CHECK_ERROR (r == -1, conn, "virDomainRestore"); - - CAMLreturn (Val_unit); -} - -CAMLprim value -ocaml_libvirt_domain_core_dump (value domv, value pathv) -{ - CAMLparam2 (domv, pathv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - char *path = String_val (pathv); - int r; - - NONBLOCKING (r = virDomainCoreDump (dom, path, 0)); - CHECK_ERROR (r == -1, conn, "virDomainCoreDump"); - - CAMLreturn (Val_unit); -} - -CAMLprim value ocaml_libvirt_domain_get_id (value domv) { CAMLparam1 (domv); @@ -457,6 +281,14 @@ ocaml_libvirt_domain_get_info (value domv) CAMLreturn (rv); } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAINGETSCHEDULERTYPE +extern char *virDomainGetSchedulerType(virDomainPtr domain, + int *nparams) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_domain_get_scheduler_type (value domv) { @@ -482,6 +314,15 @@ ocaml_libvirt_domain_get_scheduler_type (value domv) #endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAINGETSCHEDULERPARAMETERS +extern int virDomainGetSchedulerParameters (virDomainPtr domain, + virSchedParameterPtr params, + int *nparams) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_domain_get_scheduler_parameters (value domv, value nparamsv) { @@ -538,6 +379,15 @@ ocaml_libvirt_domain_get_scheduler_parameters (value domv, value nparamsv) #endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAINSETSCHEDULERPARAMETERS +extern int virDomainSetSchedulerParameters (virDomainPtr domain, + virSchedParameterPtr params, + int nparams) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_domain_set_scheduler_parameters (value domv, value paramsv) { @@ -598,22 +448,6 @@ ocaml_libvirt_domain_set_scheduler_parameters (value domv, value paramsv) } CAMLprim value -ocaml_libvirt_domain_define_xml (value connv, value xmlv) -{ - CAMLparam2 (connv, xmlv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *xml = String_val (xmlv); - virDomainPtr r; - - NONBLOCKING (r = virDomainDefineXML (conn, xml)); - CHECK_ERROR (!r, conn, "virDomainDefineXML"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - -CAMLprim value ocaml_libvirt_domain_set_vcpus (value domv, value nvcpusv) { CAMLparam2 (domv, nvcpusv); @@ -686,49 +520,14 @@ ocaml_libvirt_domain_get_vcpus (value domv, value maxinfov, value maplenv) CAMLreturn (rv); } -CAMLprim value -ocaml_libvirt_domain_get_max_vcpus (value domv) -{ - CAMLparam1 (domv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - int r; - - NONBLOCKING (r = virDomainGetMaxVcpus (dom)); - CHECK_ERROR (r == -1, conn, "virDomainGetMaxVcpus"); - - CAMLreturn (Val_int (r)); -} - -CAMLprim value -ocaml_libvirt_domain_attach_device (value domv, value xmlv) -{ - CAMLparam2 (domv, xmlv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - char *xml = String_val (xmlv); - int r; - - NONBLOCKING (r = virDomainAttachDevice (dom, xml)); - CHECK_ERROR (r == -1, conn, "virDomainAttachDevice"); - - CAMLreturn (Val_unit); -} - -CAMLprim value -ocaml_libvirt_domain_detach_device (value domv, value xmlv) -{ - CAMLparam2 (domv, xmlv); - virDomainPtr dom = Domain_val (domv); - virConnectPtr conn = Connect_domv (domv); - char *xml = String_val (xmlv); - int r; - - NONBLOCKING (r = virDomainDetachDevice (dom, xml)); - CHECK_ERROR (r == -1, conn, "virDomainDetachDevice"); - - CAMLreturn (Val_unit); -} +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAINMIGRATE +extern virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn, + unsigned long flags, const char *dname, + const char *uri, unsigned long bandwidth) + __attribute__((weak)); +#endif +#endif CAMLprim value ocaml_libvirt_domain_migrate_native (value domv, value dconnv, value flagsv, value optdnamev, value opturiv, value optbandwidthv, value unitv) @@ -780,6 +579,16 @@ ocaml_libvirt_domain_migrate_bytecode (value *argv, int argn) argv[6]); } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAINBLOCKSTATS +extern int virDomainBlockStats (virDomainPtr dom, + const char *path, + virDomainBlockStatsPtr stats, + size_t size) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_domain_block_stats (value domv, value pathv) { @@ -809,6 +618,16 @@ ocaml_libvirt_domain_block_stats (value domv, value pathv) #endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRDOMAININTERFACESTATS +extern int virDomainInterfaceStats (virDomainPtr dom, + const char *path, + virDomainInterfaceStatsPtr stats, + size_t size) + __attribute__((weak)); +#endif +#endif + CAMLprim value ocaml_libvirt_domain_interface_stats (value domv, value pathv) { @@ -841,86 +660,106 @@ ocaml_libvirt_domain_interface_stats (value domv, value pathv) #endif } -CAMLprim value -ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv) -{ - CAMLparam2 (connv, uuidv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *uuid = String_val (uuidv); - virNetworkPtr r; - - NONBLOCKING (r = virNetworkLookupByUUID (conn, (unsigned char *) uuid)); - CHECK_ERROR (!r, conn, "virNetworkLookupByUUID"); - - rv = Val_network (r, connv); - CAMLreturn (rv); -} +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEPOOLGETINFO +extern int virStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info) + __attribute__((weak)); +#endif +#endif CAMLprim value -ocaml_libvirt_network_create_xml (value connv, value xmlv) +ocaml_libvirt_storage_pool_get_info (value poolv) { - CAMLparam2 (connv, xmlv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *xml = String_val (xmlv); - virNetworkPtr r; - - NONBLOCKING (r = virNetworkCreateXML (conn, xml)); - CHECK_ERROR (!r, conn, "virNetworkCreateXML"); - - rv = Val_network (r, connv); - CAMLreturn (rv); -} +#if HAVE_VIRSTORAGEPOOLGETINFO + CAMLparam1 (poolv); + CAMLlocal2 (rv, v); + virStoragePoolPtr pool = Pool_val (poolv); + virConnectPtr conn = Connect_polv (poolv); + virStoragePoolInfo info; + int r; -CAMLprim value -ocaml_libvirt_network_define_xml (value connv, value xmlv) -{ - CAMLparam2 (connv, xmlv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *xml = String_val (xmlv); - virNetworkPtr r; + WEAK_SYMBOL_CHECK (virStoragePoolGetInfo); + NONBLOCKING (r = virStoragePoolGetInfo (pool, &info)); + CHECK_ERROR (r == -1, conn, "virStoragePoolGetInfo"); - NONBLOCKING (r = virNetworkDefineXML (conn, xml)); - CHECK_ERROR (!r, conn, "virNetworkDefineXML"); + rv = caml_alloc (4, 0); + Store_field (rv, 0, Val_int (info.state)); + v = caml_copy_int64 (info.capacity); Store_field (rv, 1, v); + v = caml_copy_int64 (info.allocation); Store_field (rv, 2, v); + v = caml_copy_int64 (info.available); Store_field (rv, 3, v); - rv = Val_network (r, connv); CAMLreturn (rv); +#else + not_supported ("virStoragePoolGetInfo"); +#endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEVOLGETINFO +extern int virStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info) + __attribute__((weak)); +#endif +#endif + CAMLprim value -ocaml_libvirt_network_destroy (value netv) +ocaml_libvirt_storage_vol_get_info (value volv) { - CAMLparam1 (netv); - virNetworkPtr net = Network_val (netv); - virConnectPtr conn = Connect_netv (netv); +#if HAVE_VIRSTORAGEVOLGETINFO + CAMLparam1 (volv); + CAMLlocal2 (rv, v); + virStorageVolPtr vol = Volume_val (volv); + virConnectPtr conn = Connect_volv (volv); + virStorageVolInfo info; int r; - NONBLOCKING (r = virNetworkDestroy (net)); - CHECK_ERROR (r == -1, conn, "virNetworkDestroy"); + WEAK_SYMBOL_CHECK (virStorageVolGetInfo); + NONBLOCKING (r = virStorageVolGetInfo (vol, &info)); + CHECK_ERROR (r == -1, conn, "virStorageVolGetInfo"); - /* So that we don't double-free in the finalizer: */ - Network_val (netv) = NULL; + rv = caml_alloc (3, 0); + Store_field (rv, 0, Val_int (info.type)); + v = caml_copy_int64 (info.capacity); Store_field (rv, 1, v); + v = caml_copy_int64 (info.allocation); Store_field (rv, 1, v); - CAMLreturn (Val_unit); + CAMLreturn (rv); +#else + not_supported ("virStorageVolGetInfo"); +#endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRJOBGETINFO +extern int virJobGetInfo(virJobPtr job, virJobInfoPtr info) + __attribute__((weak)); +#endif +#endif + CAMLprim value -ocaml_libvirt_network_free (value netv) +ocaml_libvirt_job_get_info (value jobv) { - CAMLparam1 (netv); - virNetworkPtr net = Network_val (netv); - virConnectPtr conn = Connect_netv (netv); +#if HAVE_VIRJOBGETINFO + CAMLparam1 (jobv); + CAMLlocal1 (rv); + virJobPtr job = Job_val (jobv); + virConnectPtr conn = Connect_jobv (jobv); + virJobInfo info; int r; - NONBLOCKING (r = virNetworkFree (net)); - CHECK_ERROR (r == -1, conn, "virNetworkFree"); + WEAK_SYMBOL_CHECK (virJobGetInfo); + NONBLOCKING (r = virJobGetInfo (job, &info)); + CHECK_ERROR (r == -1, conn, "virJobGetInfo"); - /* So that we don't double-free in the finalizer: */ - Network_val (netv) = NULL; + rv = caml_alloc (5, 0); + Store_field (rv, 0, Val_int (info.type)); + Store_field (rv, 1, Val_int (info.state)); + Store_field (rv, 2, Val_int (info.runningTime)); + Store_field (rv, 3, Val_int (info.remainingTime)); + Store_field (rv, 4, Val_int (info.percentComplete)); - CAMLreturn (Val_unit); + CAMLreturn (rv); +#else + not_supported ("virJobGetInfo"); +#endif } /*----------------------------------------------------------------------*/