f.write(" printf(\"%%s: %%s\\n\", \"%s\", s);\n" % ty.typename)
f.write(" if (s == NULL) abort();\n")
f.write(" free(s);\n")
- if ty.destructor_fn is not None:
- f.write(" %s(&%s_val);\n" % (ty.destructor_fn, ty.typename))
+ if ty.dispose_fn is not None:
+ f.write(" %s(&%s_val);\n" % (ty.dispose_fn, ty.typename))
f.write("\n")
f.write(" printf(\"Testing Enumerations\\n\");\n")
raise NotImplementedError("%s" % type(ty))
return s.replace("\n", "\n%s" % indent)
-def libxl_C_type_destroy(ty, v, indent = " ", parent = None):
+def libxl_C_type_dispose(ty, v, indent = " ", parent = None):
s = ""
if isinstance(ty, libxltypes.KeyedUnion):
if parent is None:
for f in ty.fields:
(nparent,fexpr) = ty.member(v, f, parent is None)
s += "case %s:\n" % f.enumname
- s += libxl_C_type_destroy(f.type, fexpr, indent + " ", nparent)
+ s += libxl_C_type_dispose(f.type, fexpr, indent + " ", nparent)
s += " break;\n"
s += "}\n"
- elif isinstance(ty, libxltypes.Struct) and (parent is None or ty.destructor_fn is None):
+ elif isinstance(ty, libxltypes.Struct) and (parent is None or ty.dispose_fn is None):
for f in [f for f in ty.fields if not f.const]:
(nparent,fexpr) = ty.member(v, f, parent is None)
- s += libxl_C_type_destroy(f.type, fexpr, "", nparent)
+ s += libxl_C_type_dispose(f.type, fexpr, "", nparent)
else:
- if ty.destructor_fn is not None:
- s += "%s(%s);\n" % (ty.destructor_fn, ty.pass_arg(v, parent is None))
+ if ty.dispose_fn is not None:
+ s += "%s(%s);\n" % (ty.dispose_fn, ty.pass_arg(v, parent is None))
if s != "":
s = indent + s
for ty in types:
f.write(libxl_C_type_define(ty) + ";\n")
- if ty.destructor_fn is not None:
- f.write("void %s(%s);\n" % (ty.destructor_fn, ty.make_arg("p")))
+ if ty.dispose_fn is not None:
+ f.write("void %s(%s);\n" % (ty.dispose_fn, ty.make_arg("p")))
if ty.json_fn is not None:
f.write("char *%s_to_json(libxl_ctx *ctx, %s);\n" % (ty.typename, ty.make_arg("p")))
if isinstance(ty, libxltypes.Enumeration):
""" % " ".join(sys.argv))
- for ty in [t for t in types if t.destructor_fn is not None and t.autogenerate_destructor]:
- f.write("void %s(%s)\n" % (ty.destructor_fn, ty.make_arg("p")))
+ for ty in [t for t in types if t.dispose_fn is not None and t.autogenerate_dispose_fn]:
+ f.write("void %s(%s)\n" % (ty.dispose_fn, ty.make_arg("p")))
f.write("{\n")
- f.write(libxl_C_type_destroy(ty, "p"))
+ f.write(libxl_C_type_dispose(ty, "p"))
f.write(" memset(p, LIBXL_DTOR_POISON, sizeof(*p));\n")
f.write("}\n")
f.write("\n")
libxltypes.PASS_BY_VALUE
libxltypes.PASS_BY_REFERENCE
-Type.destructor_fn: (default: typename + "_destroy" or None if type == None)
+Type.dispose_fn: (default: typename + "_dispose" or None if type == None)
The name of the C function which will free all dynamically allocated
memory contained within this type (but not the type itself).
-Type.autogenerate_destructor: (default: True)
+Type.autogenerate_dispose_fn: (default: True)
- Indicates if the above named Type.destructor_fn should be
+ Indicates if the above named Type.dispose_fn should be
autogenerated.
Type.json_fn: (default: typename + "_gen_json" or None if type == None)
{
if (!ctx) return 0;
if (ctx->xch) xc_interface_close(ctx->xch);
- libxl_version_info_destroy(&ctx->version_info);
+ libxl_version_info_dispose(&ctx->version_info);
if (ctx->xsh) xs_daemon_close(ctx->xsh);
return 0;
}
-void libxl_string_list_destroy(libxl_string_list *psl)
+void libxl_string_list_dispose(libxl_string_list *psl)
{
int i;
libxl_string_list sl = *psl;
free(sl);
}
-void libxl_key_value_list_destroy(libxl_key_value_list *pkvl)
+void libxl_key_value_list_dispose(libxl_key_value_list *pkvl)
{
int i;
libxl_key_value_list kvl = *pkvl;
libxl__qmp_cleanup(&gc, domid);
}
if (libxl__devices_destroy(&gc, domid, force) < 0)
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "libxl_destroy_devices failed for %d", domid);
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "libxl_devices_dispose failed for %d", domid);
vm_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/vm", dom_path));
if (vm_path)
}
out:
for (i = 0; i < num; i++)
- libxl_device_disk_destroy(&disks[i]);
+ libxl_device_disk_dispose(&disks[i]);
free(disks);
return ret;
}
xc_hypercall_buffer_free(ctx->xch, coremap);
xc_hypercall_buffer_free(ctx->xch, socketmap);
xc_hypercall_buffer_free(ctx->xch, nodemap);
- libxl_topologyinfo_destroy(info);
+ libxl_topologyinfo_dispose(info);
return ERROR_FAIL;
}
return rc;
}
-void libxl_file_reference_destroy(libxl_file_reference *f)
+void libxl_file_reference_dispose(libxl_file_reference *f)
{
libxl__file_reference_unmap(f);
free(f->path);
rc = 0;
out1:
- libxl_cpumap_destroy(&cpumap);
+ libxl_cpumap_dispose(&cpumap);
out:
xc_cpupool_infofree(ctx->xch, info);
libxl__free_all(&gc);
}
}
- libxl_topologyinfo_destroy(&topology);
+ libxl_topologyinfo_dispose(&topology);
out:
- libxl_cpumap_destroy(&freemap);
+ libxl_cpumap_dispose(&freemap);
return rc;
}
}
}
- libxl_topologyinfo_destroy(&topology);
+ libxl_topologyinfo_dispose(&topology);
out:
for (p = 0; p < n_pools; p++) {
- libxl_cpupoolinfo_destroy(poolinfo + p);
+ libxl_cpupoolinfo_dispose(poolinfo + p);
}
return ret;
#define LIBXL_MAC_BYTES(mac) mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]
typedef char **libxl_string_list;
-void libxl_string_list_destroy(libxl_string_list *sl);
+void libxl_string_list_dispose(libxl_string_list *sl);
typedef char **libxl_key_value_list;
-void libxl_key_value_list_destroy(libxl_key_value_list *kvl);
+void libxl_key_value_list_dispose(libxl_key_value_list *kvl);
typedef uint32_t libxl_hwcap[8];
uint32_t size; /* number of bytes in map */
uint8_t *map;
} libxl_cpumap;
-void libxl_cpumap_destroy(libxl_cpumap *map);
+void libxl_cpumap_dispose(libxl_cpumap *map);
typedef struct {
uint32_t entries;
uint32_t *array;
} libxl_cpuarray;
#define LIBXL_CPUARRAY_INVALID_ENTRY ~0
-void libxl_cpuarray_destroy(libxl_cpuarray *array);
+void libxl_cpuarray_dispose(libxl_cpuarray *array);
typedef struct {
/*
void * data;
size_t size;
} libxl_file_reference;
-void libxl_file_reference_destroy(libxl_file_reference *p);
+void libxl_file_reference_dispose(libxl_file_reference *p);
/* libxl_cpuid_policy_list is a dynamic array storing CPUID policies
* for multiple leafs. It is terminated with an entry holding
*/
typedef struct libxl__cpuid_policy libxl_cpuid_policy;
typedef libxl_cpuid_policy * libxl_cpuid_policy_list;
-void libxl_cpuid_destroy(libxl_cpuid_policy_list *cpuid_list);
+void libxl_cpuid_dispose(libxl_cpuid_policy_list *cpuid_list);
#define LIBXL_PCI_FUNC_ALL (~0U)
typedef int (*libxl_console_ready)(libxl_ctx *ctx, uint32_t domid, void *priv);
int libxl_domain_create_new(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid);
int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config, libxl_console_ready cb, void *priv, uint32_t *domid, int restore_fd);
-void libxl_domain_config_destroy(libxl_domain_config *d_config);
+void libxl_domain_config_dispose(libxl_domain_config *d_config);
int libxl_domain_suspend(libxl_ctx *ctx, libxl_domain_suspend_info *info,
uint32_t domid, int fd);
int libxl_domain_resume(libxl_ctx *ctx, uint32_t domid);
#include "libxl_osdeps.h"
#include "libxl_internal.h"
-void libxl_cpuid_destroy(libxl_cpuid_policy_list *p_cpuid_list)
+void libxl_cpuid_dispose(libxl_cpuid_policy_list *p_cpuid_list)
{
int i, j;
libxl_cpuid_policy_list cpuid_list = *p_cpuid_list;
#include "libxl_internal.h"
#include "flexarray.h"
-void libxl_domain_config_destroy(libxl_domain_config *d_config)
+void libxl_domain_config_dispose(libxl_domain_config *d_config)
{
int i;
for (i=0; i<d_config->num_disks; i++)
- libxl_device_disk_destroy(&d_config->disks[i]);
+ libxl_device_disk_dispose(&d_config->disks[i]);
free(d_config->disks);
for (i=0; i<d_config->num_vifs; i++)
- libxl_device_nic_destroy(&d_config->vifs[i]);
+ libxl_device_nic_dispose(&d_config->vifs[i]);
free(d_config->vifs);
for (i=0; i<d_config->num_pcidevs; i++)
- libxl_device_pci_destroy(&d_config->pcidevs[i]);
+ libxl_device_pci_dispose(&d_config->pcidevs[i]);
free(d_config->pcidevs);
for (i=0; i<d_config->num_vfbs; i++)
- libxl_device_vfb_destroy(&d_config->vfbs[i]);
+ libxl_device_vfb_dispose(&d_config->vfbs[i]);
free(d_config->vfbs);
for (i=0; i<d_config->num_vkbs; i++)
- libxl_device_vkb_destroy(&d_config->vkbs[i]);
+ libxl_device_vkb_dispose(&d_config->vkbs[i]);
free(d_config->vkbs);
- libxl_domain_create_info_destroy(&d_config->c_info);
- libxl_domain_build_info_destroy(&d_config->b_info);
- libxl_device_model_info_destroy(&d_config->dm_info);
+ libxl_domain_create_info_dispose(&d_config->c_info);
+ libxl_domain_build_info_dispose(&d_config->b_info);
+ libxl_device_model_info_dispose(&d_config->dm_info);
}
int libxl_init_create_info(libxl_ctx *ctx, libxl_domain_create_info *c_info)
if ( ret )
goto error_out;
libxl__device_console_add(gc, domid, &console, &state);
- libxl_device_console_destroy(&console);
+ libxl_device_console_dispose(&console);
dm_info->domid = domid;
ret = libxl__create_device_model(gc, dm_info,
console.consback = LIBXL_CONSOLE_BACKEND_IOEMU;
libxl__device_console_add(gc, domid, &console, &state);
- libxl_device_console_destroy(&console);
+ libxl_device_console_dispose(&console);
if (need_qemu) {
/* only copy those useful configs */
libxl_domid = Builtin("domid", json_fn = "yajl_gen_integer", autogenerate_json = False)
libxl_uuid = Builtin("uuid", passby=PASS_BY_REFERENCE)
libxl_mac = Builtin("mac", passby=PASS_BY_REFERENCE)
-libxl_cpumap = Builtin("cpumap", destructor_fn="libxl_cpumap_destroy", passby=PASS_BY_REFERENCE)
-libxl_cpuarray = Builtin("cpuarray", destructor_fn="libxl_cpuarray_destroy", passby=PASS_BY_REFERENCE)
-libxl_cpuid_policy_list = Builtin("cpuid_policy_list", destructor_fn="libxl_cpuid_destroy", passby=PASS_BY_REFERENCE)
+libxl_cpumap = Builtin("cpumap", dispose_fn="libxl_cpumap_dispose", passby=PASS_BY_REFERENCE)
+libxl_cpuarray = Builtin("cpuarray", dispose_fn="libxl_cpuarray_dispose", passby=PASS_BY_REFERENCE)
+libxl_cpuid_policy_list = Builtin("cpuid_policy_list", dispose_fn="libxl_cpuid_dispose", passby=PASS_BY_REFERENCE)
-libxl_string_list = Builtin("string_list", destructor_fn="libxl_string_list_destroy", passby=PASS_BY_REFERENCE)
-libxl_key_value_list = Builtin("key_value_list", destructor_fn="libxl_key_value_list_destroy", passby=PASS_BY_REFERENCE)
-libxl_file_reference = Builtin("file_reference", destructor_fn="libxl_file_reference_destroy", passby=PASS_BY_REFERENCE)
+libxl_string_list = Builtin("string_list", dispose_fn="libxl_string_list_dispose", passby=PASS_BY_REFERENCE)
+libxl_key_value_list = Builtin("key_value_list", dispose_fn="libxl_key_value_list_dispose", passby=PASS_BY_REFERENCE)
+libxl_file_reference = Builtin("file_reference", dispose_fn="libxl_file_reference_dispose", passby=PASS_BY_REFERENCE)
libxl_hwcap = Builtin("hwcap", passby=PASS_BY_REFERENCE)
("cpu_time", uint64),
("vcpu_max_id", uint32),
("vcpu_online", uint32),
- ], destructor_fn=None)
+ ], dispose_fn=None)
libxl_cpupoolinfo = Struct("cpupoolinfo", [
("poolid", uint32),
libxl_vminfo = Struct("vminfo", [
("uuid", libxl_uuid),
("domid", libxl_domid),
- ], destructor_fn=None)
+ ], dispose_fn=None)
libxl_version_info = Struct("version_info", [
("xen_version_major", integer),
("nr_nodes", uint32),
("hw_cap", libxl_hwcap),
("phys_cap", uint32),
- ], destructor_fn=None, dir=DIR_OUT)
+ ], dispose_fn=None, dir=DIR_OUT)
libxl_topologyinfo = Struct("topologyinfo", [
("coremap", libxl_cpuarray, False, "cpu to core map"),
libxl_sched_credit = Struct("sched_credit", [
("weight", integer),
("cap", integer),
- ], destructor_fn=None)
+ ], dispose_fn=None)
}
free(poolname);
}
- libxl_cpupoolinfo_destroy(poolinfo + i);
+ libxl_cpupoolinfo_dispose(poolinfo + i);
}
free(poolinfo);
return ret;
}
for (i=0; i<nb; i++)
- libxl_nicinfo_destroy(&nics[i]);
+ libxl_nicinfo_dispose(&nics[i]);
free(nics);
return rc;
}
return 0;
}
-void libxl_cpumap_destroy(libxl_cpumap *map)
+void libxl_cpumap_dispose(libxl_cpumap *map)
{
free(map->map);
}
return 0;
}
-void libxl_cpuarray_destroy(libxl_cpuarray *array)
+void libxl_cpuarray_dispose(libxl_cpuarray *array)
{
free(array->array);
}
self.rawname = typename
if self.typename is not None:
- self.destructor_fn = kwargs.setdefault('destructor_fn', self.typename + "_destroy")
+ self.dispose_fn = kwargs.setdefault('dispose_fn', self.typename + "_dispose")
else:
- self.destructor_fn = kwargs.setdefault('destructor_fn', None)
+ self.dispose_fn = kwargs.setdefault('dispose_fn', None)
- self.autogenerate_destructor = kwargs.setdefault('autogenerate_destructor', True)
+ self.autogenerate_dispose_fn = kwargs.setdefault('autogenerate_dispose_fn', True)
if self.typename is not None:
self.json_fn = kwargs.setdefault('json_fn', self.typename + "_gen_json")
class Builtin(Type):
"""Builtin type"""
def __init__(self, typename, **kwargs):
- kwargs.setdefault('destructor_fn', None)
- kwargs.setdefault('autogenerate_destructor', False)
+ kwargs.setdefault('dispose_fn', None)
+ kwargs.setdefault('autogenerate_dispose_fn', False)
kwargs.setdefault('autogenerate_json', False)
Type.__init__(self, typename, **kwargs)
class Number(Builtin):
def __init__(self, ctype, **kwargs):
kwargs.setdefault('namespace', None)
- kwargs.setdefault('destructor_fn', None)
+ kwargs.setdefault('dispose_fn', None)
kwargs.setdefault('signed', False)
kwargs.setdefault('json_fn', "yajl_gen_integer")
self.signed = kwargs['signed']
class UInt(Number):
def __init__(self, w, **kwargs):
kwargs.setdefault('namespace', None)
- kwargs.setdefault('destructor_fn', None)
+ kwargs.setdefault('dispose_fn', None)
Number.__init__(self, "uint%d_t" % w, **kwargs)
self.width = w
class Enumeration(Type):
def __init__(self, typename, values, **kwargs):
- kwargs.setdefault('destructor_fn', None)
+ kwargs.setdefault('dispose_fn', None)
Type.__init__(self, typename, **kwargs)
self.values = []
# union therefore any specific instance of this class will
# need to provide an explicit destructor function.
kwargs.setdefault('passby', PASS_BY_REFERENCE)
- kwargs.setdefault('destructor_fn', None)
+ kwargs.setdefault('dispose_fn', None)
Aggregate.__init__(self, "union", name, fields, **kwargs)
class KeyedUnion(Aggregate):
uint32 = UInt(32)
uint64 = UInt(64)
-string = Builtin("char *", namespace = None, destructor_fn = "free",
+string = Builtin("char *", namespace = None, dispose_fn = "free",
json_fn = "libxl__string_gen_json",
autogenerate_json = False)
case LIBXL_EVENT_TYPE_DISK_EJECT:
if (libxl_event_get_disk_eject_info(ctx, domid, &event, &disk)) {
libxl_cdrom_insert(ctx, domid, &disk);
- libxl_device_disk_destroy(&disk);
+ libxl_device_disk_dispose(&disk);
}
break;
}
if (logfile != 2)
close(logfile);
- libxl_domain_config_destroy(&d_config);
+ libxl_domain_config_dispose(&d_config);
free(config_data);
printf("%02x.%01x %04x:%02x:%02x.%01x\n",
(pcidevs[i].vdevfn >> 3) & 0x1f, pcidevs[i].vdevfn & 0x7,
pcidevs[i].domain, pcidevs[i].bus, pcidevs[i].dev, pcidevs[i].func);
- libxl_device_pci_destroy(&pcidevs[i]);
+ libxl_device_pci_dispose(&pcidevs[i]);
}
free(pcidevs);
}
exit(2);
}
libxl_device_pci_remove(ctx, domid, &pcidev, force);
- libxl_device_pci_destroy(&pcidev);
+ libxl_device_pci_dispose(&pcidev);
}
int main_pcidetach(int argc, char **argv)
exit(2);
}
libxl_device_pci_add(ctx, domid, &pcidev);
- libxl_device_pci_destroy(&pcidev);
+ libxl_device_pci_dispose(&pcidev);
}
int main_pciattach(int argc, char **argv)
memset(&d_config, 0x00, sizeof(d_config));
parse_config_data(config_file, (char *)data, len, &d_config, &dm_info);
printf_info(info[i].domid, &d_config, &dm_info);
- libxl_domain_config_destroy(&d_config);
+ libxl_domain_config_dispose(&d_config);
free(data);
free(config_file);
}
for (i = 0; i < nb_vcpu; i++) {
print_vcpuinfo(domid, &vcpuinfo[i], nr_cpus);
- libxl_vcpuinfo_destroy(&vcpuinfo[i]);
+ libxl_vcpuinfo_dispose(&vcpuinfo[i]);
}
free(vcpuinfo);
}
}
vcpupin_out1:
- libxl_cpumap_destroy(&cpumap);
+ libxl_cpumap_dispose(&cpumap);
vcpupin_out:
;
}
if (libxl_set_vcpuonline(ctx, domid, &cpumap) < 0)
fprintf(stderr, "libxl_set_vcpuonline failed domid=%d max_vcpus=%d\n", domid, max_vcpus);
- libxl_cpumap_destroy(&cpumap);
+ libxl_cpumap_dispose(&cpumap);
}
int main_vcpuset(int argc, char **argv)
printf("numa_info : none\n");
- libxl_topologyinfo_destroy(&info);
+ libxl_topologyinfo_dispose(&info);
return;
}
fprintf(stderr, "libxl_device_nic_add failed.\n");
return 1;
}
- libxl_device_nic_destroy(&nic);
+ libxl_device_nic_dispose(&nic);
return 0;
}
printf("%6d %5d %6d %5d/%-11d %-30s\n",
nics[i].devid, nics[i].state, nics[i].evtch,
nics[i].rref_tx, nics[i].rref_rx, nics[i].backend);
- libxl_nicinfo_destroy(&nics[i]);
+ libxl_nicinfo_dispose(&nics[i]);
}
free(nics);
}
fprintf(stderr, "libxl_device_nic_del failed.\n");
return 1;
}
- libxl_device_nic_destroy(&nic);
+ libxl_device_nic_dispose(&nic);
return 0;
}
printf("%-5d %-3d %-6d %-5d %-6d %-8d %-30s\n",
diskinfo.devid, diskinfo.backend_id, diskinfo.frontend_id,
diskinfo.state, diskinfo.evtch, diskinfo.rref, diskinfo.backend);
- libxl_diskinfo_destroy(&diskinfo);
+ libxl_diskinfo_dispose(&diskinfo);
}
- libxl_device_disk_destroy(&disks[i]);
+ libxl_device_disk_dispose(&disks[i]);
}
free(disks);
}
n_nodes++;
}
- libxl_topologyinfo_destroy(&topology);
+ libxl_topologyinfo_dispose(&topology);
if (n_cpus == 0) {
fprintf(stderr, "no free cpu found\n");
printf("\n");
}
}
- libxl_cpupoolinfo_destroy(poolinfo + p);
+ libxl_cpupoolinfo_dispose(poolinfo + p);
}
return ret;
poolid = poolinfo[0].poolid;
schedid = poolinfo[0].sched_id;
for (p = 0; p < n_pools; p++) {
- libxl_cpupoolinfo_destroy(poolinfo + p);
+ libxl_cpupoolinfo_dispose(poolinfo + p);
}
if (n_pools > 1) {
fprintf(stderr, "splitting not possible, already cpupools in use\n");
if (libxl_cpumap_alloc(ctx, &cpumap)) {
fprintf(stderr, "Failed to allocate cpumap\n");
- libxl_topologyinfo_destroy(&topology);
+ libxl_topologyinfo_dispose(&topology);
return -ERROR_FAIL;
}
}
out:
- libxl_topologyinfo_destroy(&topology);
- libxl_cpumap_destroy(&cpumap);
+ libxl_topologyinfo_dispose(&topology);
+ libxl_cpumap_dispose(&cpumap);
return ret;
}
def py_object_def(ty):
l = []
- if ty.destructor_fn is not None:
- dtor = ' %s(&self->obj);\n'%ty.destructor_fn
+ if ty.dispose_fn is not None:
+ dtor = ' %s(&self->obj);\n'%ty.dispose_fn
else:
dtor = ''
int attrib__libxl_key_value_list_set(PyObject *v, libxl_key_value_list *pptr)
{
if ( *pptr ) {
- libxl_key_value_list_destroy(pptr);
+ libxl_key_value_list_dispose(pptr);
*pptr = NULL;
}
if ( v == Py_None )