aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl
diff options
context:
space:
mode:
authorMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-05 14:34:27 +0100
committerMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-10-05 14:34:27 +0100
commitfb0ddeafbc3334a5d7acff44e8f32887b3ee8cc6 (patch)
tree8476524e8b13e7a737102885be9667aa10b374fc /tools/libxl
parent45f57813f646967f93ddadf28a1eb7b2464d35a7 (diff)
downloadxen-fb0ddeafbc3334a5d7acff44e8f32887b3ee8cc6.tar.gz
xen-fb0ddeafbc3334a5d7acff44e8f32887b3ee8cc6.tar.bz2
xen-fb0ddeafbc3334a5d7acff44e8f32887b3ee8cc6.zip
libxl: make devid a type so it is initialized properly
Previously device ids in libxl were treated as integers meaning they were being initialized to 0, which is a valid device id. This patch makes devid its own type in libxl and initializes it to -1, an invalid value. This fixes a bug where if you try to do a xl DEV-attach multiple time it will continuously try to reattach device 0 instead of generating a new device id. Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu> Reviewed-by: George Dunlap <george.dunlap@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxl')
-rw-r--r--tools/libxl/gentest.py2
-rw-r--r--tools/libxl/libxl.h1
-rw-r--r--tools/libxl/libxl_types.idl11
3 files changed, 8 insertions, 6 deletions
diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py
index 2915f717fc..84b4fd756f 100644
--- a/tools/libxl/gentest.py
+++ b/tools/libxl/gentest.py
@@ -60,7 +60,7 @@ def gen_rand_init(ty, v, indent = " ", parent = None):
passby=idl.PASS_BY_REFERENCE))
elif ty.typename in ["libxl_uuid", "libxl_mac", "libxl_hwcap"]:
s += "rand_bytes((uint8_t *)%s, sizeof(*%s));\n" % (v,v)
- elif ty.typename in ["libxl_domid"] or isinstance(ty, idl.Number):
+ elif ty.typename in ["libxl_domid", "libxl_devid"] or isinstance(ty, idl.Number):
s += "%s = rand() %% (sizeof(%s)*8);\n" % \
(ty.pass_arg(v, parent is None),
ty.pass_arg(v, parent is None))
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 599c7f10d0..7a7c4193ef 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -307,6 +307,7 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list *cpuid_list);
#define LIBXL_PCI_FUNC_ALL (~0U)
typedef uint32_t libxl_domid;
+typedef int libxl_devid;
/*
* Formatting Enumerations.
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 6d5c578519..1504997238 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -8,6 +8,7 @@ namespace("libxl_")
libxl_defbool = Builtin("defbool", passby=PASS_BY_REFERENCE)
libxl_domid = Builtin("domid", json_fn = "yajl_gen_integer", autogenerate_json = False)
+libxl_devid = Builtin("devid", json_fn = "yajl_gen_integer", autogenerate_json = False, signed = True, init_val="-1")
libxl_uuid = Builtin("uuid", passby=PASS_BY_REFERENCE)
libxl_mac = Builtin("mac", passby=PASS_BY_REFERENCE)
libxl_bitmap = Builtin("bitmap", dispose_fn="libxl_bitmap_dispose", passby=PASS_BY_REFERENCE)
@@ -337,7 +338,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
libxl_device_vfb = Struct("device_vfb", [
("backend_domid", libxl_domid),
- ("devid", integer),
+ ("devid", libxl_devid),
("vnc", libxl_vnc_info),
("sdl", libxl_sdl_info),
# set keyboard layout, default is en-us keyboard
@@ -346,7 +347,7 @@ libxl_device_vfb = Struct("device_vfb", [
libxl_device_vkb = Struct("device_vkb", [
("backend_domid", libxl_domid),
- ("devid", integer),
+ ("devid", libxl_devid),
])
libxl_device_disk = Struct("device_disk", [
@@ -363,7 +364,7 @@ libxl_device_disk = Struct("device_disk", [
libxl_device_nic = Struct("device_nic", [
("backend_domid", libxl_domid),
- ("devid", integer),
+ ("devid", libxl_devid),
("mtu", integer),
("model", string),
("mac", libxl_mac),
@@ -393,7 +394,7 @@ libxl_diskinfo = Struct("diskinfo", [
("backend_id", uint32),
("frontend", string),
("frontend_id", uint32),
- ("devid", integer),
+ ("devid", libxl_devid),
("state", integer),
("evtch", integer),
("rref", integer),
@@ -404,7 +405,7 @@ libxl_nicinfo = Struct("nicinfo", [
("backend_id", uint32),
("frontend", string),
("frontend_id", uint32),
- ("devid", integer),
+ ("devid", libxl_devid),
("state", integer),
("evtch", integer),
("rref_tx", integer),