return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainBlockStats(domain, path, &stats, sizeof(stats));
+ LIBVIRT_END_ALLOW_THREADS;
+
if (c_retval < 0)
return VIR_PY_NONE;
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainInterfaceStats(domain, path, &stats, sizeof(stats));
+ LIBVIRT_END_ALLOW_THREADS;
+
if (c_retval < 0)
return VIR_PY_NONE;
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainGetSchedulerType(domain, &nparams);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval == NULL)
return VIR_PY_NONE;
virDomainPtr domain;
PyObject *pyobj_domain, *info;
char *c_retval;
+ int i_retval;
int nparams, i;
virSchedParameterPtr params;
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainGetSchedulerType(domain, &nparams);
+ LIBVIRT_END_ALLOW_THREADS;
+
if (c_retval == NULL)
return VIR_PY_NONE;
free(c_retval);
if ((params = malloc(sizeof(*params)*nparams)) == NULL)
return VIR_PY_NONE;
- if (virDomainGetSchedulerParameters(domain, params, &nparams) < 0) {
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainGetSchedulerParameters(domain, params, &nparams);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (i_retval < 0) {
free(params);
return VIR_PY_NONE;
}
virDomainPtr domain;
PyObject *pyobj_domain, *info;
char *c_retval;
+ int i_retval;
int nparams, i;
virSchedParameterPtr params;
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virDomainGetSchedulerType(domain, &nparams);
+ LIBVIRT_END_ALLOW_THREADS;
+
if (c_retval == NULL)
return VIR_PY_INT_FAIL;
free(c_retval);
if ((params = malloc(sizeof(*params)*nparams)) == NULL)
return VIR_PY_INT_FAIL;
- if (virDomainGetSchedulerParameters(domain, params, &nparams) < 0) {
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainGetSchedulerParameters(domain, params, &nparams);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (i_retval < 0) {
free(params);
return VIR_PY_INT_FAIL;
}
}
}
- if (virDomainSetSchedulerParameters(domain, params, nparams) < 0) {
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainSetSchedulerParameters(domain, params, nparams);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (i_retval < 0) {
free(params);
return VIR_PY_INT_FAIL;
}
virVcpuInfoPtr cpuinfo = NULL;
unsigned char *cpumap = NULL;
int cpumaplen, i;
+ int i_retval;
if (!PyArg_ParseTuple(args, (char *)"O:virDomainGetVcpus",
&pyobj_domain))
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
- if (virNodeGetInfo(virDomainGetConnect(domain), &nodeinfo) != 0)
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virNodeGetInfo(virDomainGetConnect(domain), &nodeinfo);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (i_retval < 0)
return VIR_PY_NONE;
- if (virDomainGetInfo(domain, &dominfo) != 0)
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainGetInfo(domain, &dominfo);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (i_retval < 0)
return VIR_PY_NONE;
if ((cpuinfo = malloc(sizeof(*cpuinfo)*dominfo.nrVirtCpu)) == NULL)
if ((cpumap = malloc(dominfo.nrVirtCpu * cpumaplen)) == NULL)
goto cleanup;
- if (virDomainGetVcpus(domain,
- cpuinfo, dominfo.nrVirtCpu,
- cpumap, cpumaplen) < 0)
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainGetVcpus(domain,
+ cpuinfo, dominfo.nrVirtCpu,
+ cpumap, cpumaplen);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (i_retval < 0)
goto cleanup;
/* convert to a Python tuple of long objects */
virNodeInfo nodeinfo;
unsigned char *cpumap;
int cpumaplen, i, vcpu;
+ int i_retval;
if (!PyArg_ParseTuple(args, (char *)"OiO:virDomainPinVcpu",
&pyobj_domain, &vcpu, &pycpumap))
return(NULL);
domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
- if (virNodeGetInfo(virDomainGetConnect(domain), &nodeinfo) != 0)
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virNodeGetInfo(virDomainGetConnect(domain), &nodeinfo);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (i_retval < 0)
return VIR_PY_INT_FAIL;
cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo));
VIR_UNUSE_CPU(cpumap, i);
}
- virDomainPinVcpu(domain, vcpu, cpumap, cpumaplen);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virDomainPinVcpu(domain, vcpu, cpumap, cpumaplen);
+ LIBVIRT_END_ALLOW_THREADS;
Py_DECREF(truth);
free(cpumap);
+ if (i_retval < 0)
+ return VIR_PY_INT_FAIL;
+
return VIR_PY_INT_SUCCESS;
}
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
- if ((err = virConnGetLastError(conn)) == NULL)
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ err = virConnGetLastError(conn);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (err == NULL)
return VIR_PY_NONE;
if ((info = PyTuple_New(9)) == NULL)
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfDefinedDomains(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListDefinedDomains(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfNetworks(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListNetworks(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfDefinedNetworks(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListDefinedNetworks(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfStoragePools(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListStoragePools(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfDefinedStoragePools(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListDefinedStoragePools(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
pool = (virStoragePoolPtr) PyvirStoragePool_Get(pyobj_pool);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virStoragePoolNumOfVolumes(pool);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virStoragePoolListVolumes(pool, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virNodeNumOfDevices(conn, cap, flags);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virNodeListDevices(conn, cap, names, c_retval, flags);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
dev = (virNodeDevicePtr) PyvirNodeDevice_Get(pyobj_dev);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virNodeDeviceNumOfCaps(dev);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virNodeDeviceListCaps(dev, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfInterfaces(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListInterfaces(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;
return(NULL);
conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectNumOfDefinedInterfaces(conn);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0)
return VIR_PY_NONE;
names = malloc(sizeof(*names) * c_retval);
if (!names)
return VIR_PY_NONE;
+ LIBVIRT_BEGIN_ALLOW_THREADS;
c_retval = virConnectListDefinedInterfaces(conn, names, c_retval);
+ LIBVIRT_END_ALLOW_THREADS;
if (c_retval < 0) {
free(names);
return VIR_PY_NONE;