|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 27 of 32 RFC] libxl: use defbool for graphics related options
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1326474297 0
# Node ID b8426902efa002b6941aee6dff109aa33a4372c8
# Parent 81def18dfda0899a8c7309f284d7ee4d6009da62
libxl: use defbool for graphics related options
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r 81def18dfda0 -r b8426902efa0 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/libxl/libxl.c Fri Jan 13 17:04:57 2012 +0000
@@ -1993,16 +1993,24 @@ out:
int libxl_device_vfb_init(libxl_ctx *ctx, libxl_device_vfb *vfb)
{
memset(vfb, 0x00, sizeof(libxl_device_vfb));
- vfb->vnc.enable = 1;
- vfb->vnc.passwd = NULL;
- vfb->vnc.listen = strdup("127.0.0.1");
- vfb->vnc.display = 0;
- vfb->vnc.findunused = 1;
- vfb->keymap = NULL;
- vfb->sdl.enable = 0;
- vfb->sdl.opengl = 0;
- vfb->sdl.display = NULL;
- vfb->sdl.xauthority = NULL;
+ return 0;
+}
+
+static int libxl__device_vfb_setdefaults(libxl__gc *gc,
+ libxl_device_vfb *vfb)
+{
+ libxl_defbool_setdefault(&vfb->vnc.enable, true);
+ if (libxl_defbool_val(vfb->vnc.enable)) {
+ if (!vfb->vnc.listen)
+ vfb->vnc.listen = strdup("127.0.0.1");
+ libxl_defbool_setdefault(&vfb->vnc.findunused, true);
+ }
+
+ libxl_defbool_setdefault(&vfb->sdl.enable, false);
+ if (libxl_defbool_val(vfb->sdl.enable)) {
+ libxl_defbool_setdefault(&vfb->sdl.opengl, false);
+ }
+
return 0;
}
@@ -2027,6 +2035,9 @@ int libxl_device_vfb_add(libxl_ctx *ctx,
libxl__device device;
int rc;
+ rc = libxl__device_vfb_setdefaults(gc, vfb);
+ if (rc) goto out;
+
front = flexarray_make(16, 1);
if (!front) {
rc = ERROR_NOMEM;
@@ -2046,17 +2057,17 @@ int libxl_device_vfb_add(libxl_ctx *ctx,
flexarray_append_pair(back, "state", libxl__sprintf(gc, "%d", 1));
flexarray_append_pair(back, "domain", libxl__domid_to_name(gc, domid));
flexarray_append_pair(back, "vnc",
- libxl__sprintf(gc, "%d", vfb->vnc.enable));
+ libxl_defbool_val(vfb->vnc.enable) ? "1" : "0");
flexarray_append_pair(back, "vnclisten", vfb->vnc.listen);
flexarray_append_pair(back, "vncpasswd", vfb->vnc.passwd);
flexarray_append_pair(back, "vncdisplay",
libxl__sprintf(gc, "%d", vfb->vnc.display));
flexarray_append_pair(back, "vncunused",
- libxl__sprintf(gc, "%d", vfb->vnc.findunused));
+ libxl_defbool_val(vfb->vnc.findunused) ? "1" : "0");
flexarray_append_pair(back, "sdl",
- libxl__sprintf(gc, "%d", vfb->sdl.enable));
+ libxl_defbool_val(vfb->sdl.enable) ? "1" : "0");
flexarray_append_pair(back, "opengl",
- libxl__sprintf(gc, "%d", vfb->sdl.opengl));
+ libxl_defbool_val(vfb->sdl.opengl) ? "1" : "0");
if (vfb->sdl.xauthority) {
flexarray_append_pair(back, "xauthority", vfb->sdl.xauthority);
}
diff -r 81def18dfda0 -r b8426902efa0 tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/libxl/libxl_create.c Fri Jan 13 17:04:57 2012 +0000
@@ -101,15 +101,9 @@ int libxl_init_build_info(libxl_ctx *ctx
b_info->u.hvm.firmware = NULL;
b_info->u.hvm.timer_mode = 1;
- b_info->u.hvm.stdvga = 0;
- b_info->u.hvm.vnc.enable = 1;
b_info->u.hvm.vnc.listen = strdup("127.0.0.1");
b_info->u.hvm.vnc.display = 0;
- b_info->u.hvm.vnc.findunused = 1;
b_info->u.hvm.keymap = NULL;
- b_info->u.hvm.sdl.enable = 0;
- b_info->u.hvm.sdl.opengl = 0;
- b_info->u.hvm.nographic = 0;
b_info->u.hvm.serial = NULL;
b_info->u.hvm.boot = strdup("cda");
b_info->u.hvm.usbdevice = NULL;
@@ -144,6 +138,28 @@ int libxl__domain_build_info_setdefaults
libxl_defbool_setdefault(&b_info->u.hvm.nested_hvm, false);
libxl_defbool_setdefault(&b_info->u.hvm.usb, false);
libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci, true);
+
+ libxl_defbool_setdefault(&b_info->u.hvm.stdvga, false);
+ libxl_defbool_setdefault(&b_info->u.hvm.vnc.enable, true);
+ if (libxl_defbool_val(b_info->u.hvm.vnc.enable)) {
+ libxl_defbool_setdefault(&b_info->u.hvm.vnc.findunused, true);
+ }
+
+ libxl_defbool_setdefault(&b_info->u.hvm.sdl.enable, false);
+ if (libxl_defbool_val(b_info->u.hvm.sdl.enable)) {
+ libxl_defbool_setdefault(&b_info->u.hvm.sdl.opengl, false);
+ }
+
+ libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
+ if (libxl_defbool_val(b_info->u.hvm.spice.enable)) {
+ libxl_defbool_setdefault(&b_info->u.hvm.spice.disable_ticketing,
+ false);
+ libxl_defbool_setdefault(&b_info->u.hvm.spice.agent_mouse, true);
+ }
+
+ libxl_defbool_setdefault(&b_info->u.hvm.nographic, false);
+
+ libxl_defbool_setdefault(&b_info->u.hvm.gfx_passthru, false);
break;
case LIBXL_DOMAIN_TYPE_PV:
libxl_defbool_setdefault(&b_info->u.pv.e820_host, false);
diff -r 81def18dfda0 -r b8426902efa0 tools/libxl/libxl_dm.c
--- a/tools/libxl/libxl_dm.c Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/libxl/libxl_dm.c Fri Jan 13 17:04:57 2012 +0000
@@ -89,7 +89,7 @@ static const libxl_vnc_info *dm_vnc(cons
} else if (guest_config->num_vfbs > 0) {
vnc = &guest_config->vfbs[0].vnc;
}
- return vnc && vnc->enable ? vnc : NULL;
+ return vnc && libxl_defbool_val(vnc->enable) ? vnc : NULL;
}
static const libxl_sdl_info *dm_sdl(const libxl_domain_config *guest_config)
@@ -100,7 +100,7 @@ static const libxl_sdl_info *dm_sdl(cons
} else if (guest_config->num_vfbs > 0) {
sdl = &guest_config->vfbs[0].sdl;
}
- return sdl && sdl->enable ? sdl : NULL;
+ return sdl && libxl_defbool_val(sdl->enable) ? sdl : NULL;
}
static const char *dm_keymap(const libxl_domain_config *guest_config)
@@ -162,13 +162,13 @@ static char ** libxl__build_device_model
flexarray_append(dm_args, "-vnc");
flexarray_append(dm_args, vncarg);
- if (vnc->findunused) {
+ if (libxl_defbool_val(vnc->findunused)) {
flexarray_append(dm_args, "-vncunused");
}
}
if (sdl) {
flexarray_append(dm_args, "-sdl");
- if (!sdl->opengl) {
+ if (!libxl_defbool_val(sdl->opengl)) {
flexarray_append(dm_args, "-disable-opengl");
}
/* XXX sdl->{display,xauthority} into $DISPLAY/$XAUTHORITY */
@@ -183,7 +183,7 @@ static char ** libxl__build_device_model
flexarray_vappend(dm_args, "-serial", b_info->u.hvm.serial, NULL);
}
- if (b_info->u.hvm.nographic && (!sdl && !vnc)) {
+ if (libxl_defbool_val(b_info->u.hvm.nographic) && (!sdl && !vnc)) {
flexarray_append(dm_args, "-nographic");
}
@@ -193,7 +193,7 @@ static char ** libxl__build_device_model
libxl__sizekb_to_mb(b_info->video_memkb)),
NULL);
}
- if (b_info->u.hvm.stdvga) {
+ if (libxl_defbool_val(b_info->u.hvm.stdvga)) {
flexarray_append(dm_args, "-std-vga");
}
@@ -246,7 +246,7 @@ static char ** libxl__build_device_model
if ( ioemu_vifs == 0 ) {
flexarray_vappend(dm_args, "-net", "none", NULL);
}
- if (b_info->u.hvm.gfx_passthru) {
+ if (libxl_defbool_val(b_info->u.hvm.gfx_passthru)) {
flexarray_append(dm_args, "-gfx_passthru");
}
} else {
@@ -299,7 +299,7 @@ static char *dm_spice_options(libxl__gc
return NULL;
}
- if (!spice->disable_ticketing) {
+ if (!libxl_defbool_val(spice->disable_ticketing)) {
if (!spice->passwd) {
LIBXL__LOG(CTX, LIBXL__LOG_ERROR,
"spice ticketing is enabled but missing password");
@@ -315,12 +315,12 @@ static char *dm_spice_options(libxl__gc
spice->port, spice->tls_port);
if (spice->host)
opt = libxl__sprintf(gc, "%s,addr=%s", opt, spice->host);
- if (spice->disable_ticketing)
+ if (libxl_defbool_val(spice->disable_ticketing))
opt = libxl__sprintf(gc, "%s,disable-ticketing", opt);
else
opt = libxl__sprintf(gc, "%s,password=%s", opt, spice->passwd);
opt = libxl__sprintf(gc, "%s,agent-mouse=%s", opt,
- spice->agent_mouse ? "on" : "off");
+ libxl_defbool_val(spice->agent_mouse) ? "on" : "off");
return opt;
}
@@ -387,11 +387,11 @@ static char ** libxl__build_device_model
if (strchr(listen, ':') != NULL)
flexarray_append(dm_args,
libxl__sprintf(gc, "%s%s", listen,
- vnc->findunused ? ",to=99" : ""));
+ libxl_defbool_val(vnc->findunused) ? ",to=99" : ""));
else
flexarray_append(dm_args,
libxl__sprintf(gc, "%s:%d%s", listen, display,
- vnc->findunused ? ",to=99" : ""));
+ libxl_defbool_val(vnc->findunused) ? ",to=99" : ""));
}
if (sdl) {
flexarray_append(dm_args, "-sdl");
@@ -413,11 +413,11 @@ static char ** libxl__build_device_model
flexarray_vappend(dm_args, "-serial", b_info->u.hvm.serial, NULL);
}
- if (b_info->u.hvm.nographic && (!sdl && !vnc)) {
+ if (libxl_defbool_val(b_info->u.hvm.nographic) && (!sdl && !vnc)) {
flexarray_append(dm_args, "-nographic");
}
- if (b_info->u.hvm.spice.enable) {
+ if (libxl_defbool_val(b_info->u.hvm.spice.enable)) {
const libxl_spice_info *spice = &b_info->u.hvm.spice;
char *spiceoptions = dm_spice_options(gc, spice);
if (!spiceoptions)
@@ -427,7 +427,7 @@ static char ** libxl__build_device_model
flexarray_append(dm_args, spiceoptions);
}
- if (b_info->u.hvm.stdvga) {
+ if (libxl_defbool_val(b_info->u.hvm.stdvga)) {
flexarray_vappend(dm_args, "-vga", "std", NULL);
}
@@ -487,7 +487,7 @@ static char ** libxl__build_device_model
flexarray_append(dm_args, "-net");
flexarray_append(dm_args, "none");
}
- if (b_info->u.hvm.gfx_passthru) {
+ if (libxl_defbool_val(b_info->u.hvm.gfx_passthru)) {
flexarray_append(dm_args, "-gfx_passthru");
}
} else {
diff -r 81def18dfda0 -r b8426902efa0 tools/libxl/libxl_types.idl
--- a/tools/libxl/libxl_types.idl Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/libxl/libxl_types.idl Fri Jan 13 17:04:57 2012 +0000
@@ -98,31 +98,31 @@ libxl_tsc_mode = Enumeration("tsc_mode",
# Complex libxl types
#
libxl_vnc_info = Struct("vnc_info", [
- ("enable", bool),
+ ("enable", libxl_defbool),
# "address:port" that should be listened on
("listen", string),
("passwd", string),
("display", integer),
# If set then try to find an unused port
- ("findunused", bool),
+ ("findunused", libxl_defbool),
])
libxl_spice_info = Struct("spice_info", [
- ("enable", bool),
+ ("enable", libxl_defbool),
# At least one of spice port or spicetls_post must be given
("port", integer),
("tls_port", integer),
# Interface to bind to
("host", string),
# enable client connection with no password
- ("disable_ticketing", bool),
+ ("disable_ticketing", libxl_defbool),
("passwd", string),
- ("agent_mouse", bool),
+ ("agent_mouse", libxl_defbool),
])
libxl_sdl_info = Struct("sdl_info", [
- ("enable", bool),
- ("opengl", bool),
+ ("enable", libxl_defbool),
+ ("opengl", libxl_defbool),
("display", string),
("xauthority", string),
])
@@ -234,15 +234,15 @@ libxl_domain_build_info = Struct("domain
("vpt_align", libxl_defbool),
("timer_mode", integer),
("nested_hvm", libxl_defbool),
- ("nographic", bool),
- ("stdvga", bool),
+ ("nographic", libxl_defbool),
+ ("stdvga", libxl_defbool),
("vnc", libxl_vnc_info),
# keyboard layout, default is en-us
keyboard
("keymap", string),
("sdl", libxl_sdl_info),
("spice", libxl_spice_info),
- ("gfx_passthru", bool),
+ ("gfx_passthru", libxl_defbool),
("serial", string),
("boot", string),
diff -r 81def18dfda0 -r b8426902efa0 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/libxl/xl_cmdimpl.c Fri Jan 13 17:04:57 2012 +0000
@@ -366,25 +366,34 @@ static void printf_info(int domid,
printf("\t\t\t(timer_mode %d)\n", b_info->u.hvm.timer_mode);
printf("\t\t\t(nestedhvm %s)\n",
libxl_defbool_to_string(b_info->u.hvm.nested_hvm));
- printf("\t\t\t(stdvga %d)\n", b_info->u.hvm.stdvga);
- printf("\t\t\t(vnc %d)\n", b_info->u.hvm.vnc.enable);
+ printf("\t\t\t(stdvga %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.stdvga));
+ printf("\t\t\t(vnc %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.vnc.enable));
printf("\t\t\t(vnclisten %s)\n", b_info->u.hvm.vnc.listen);
printf("\t\t\t(vncdisplay %d)\n", b_info->u.hvm.vnc.display);
- printf("\t\t\t(vncunused %d)\n", b_info->u.hvm.vnc.findunused);
+ printf("\t\t\t(vncunused %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.vnc.findunused));
printf("\t\t\t(keymap %s)\n", b_info->u.hvm.keymap);
- printf("\t\t\t(sdl %d)\n", b_info->u.hvm.sdl.enable);
- printf("\t\t\t(opengl %d)\n", b_info->u.hvm.sdl.opengl);
- printf("\t\t\t(nographic %d)\n", b_info->u.hvm.nographic);
- printf("\t\t\t(spice %d)\n", b_info->u.hvm.spice.enable);
+ printf("\t\t\t(sdl %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.sdl.enable));
+ printf("\t\t\t(opengl %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.sdl.opengl));
+ printf("\t\t\t(nographic %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.nographic));
+ printf("\t\t\t(spice %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.spice.enable));
printf("\t\t\t(spiceport %d)\n", b_info->u.hvm.spice.port);
printf("\t\t\t(spicetls_port %d)\n", b_info->u.hvm.spice.tls_port);
printf("\t\t\t(spicehost %s)\n", b_info->u.hvm.spice.host);
- printf("\t\t\t(spicedisable_ticketing %d)\n",
- b_info->u.hvm.spice.disable_ticketing);
- printf("\t\t\t(spiceagent_mouse %d)\n",
b_info->u.hvm.spice.agent_mouse);
+ printf("\t\t\t(spicedisable_ticketing %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.spice.disable_ticketing));
+ printf("\t\t\t(spiceagent_mouse %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.spice.agent_mouse));
printf("\t\t\t(device_model %s)\n", b_info->device_model ? :
"default");
- printf("\t\t\t(gfx_passthru %d)\n", b_info->u.hvm.gfx_passthru);
+ printf("\t\t\t(gfx_passthru %s)\n",
+ libxl_defbool_to_string(b_info->u.hvm.gfx_passthru));
printf("\t\t\t(serial %s)\n", b_info->u.hvm.serial);
printf("\t\t\t(boot %s)\n", b_info->u.hvm.boot);
printf("\t\t\t(usb %s)\n", libxl_defbool_to_string(b_info->u.hvm.usb));
@@ -459,13 +468,17 @@ static void printf_info(int domid,
printf("\t\t\t(backend_domid %d)\n", d_config->vfbs[i].backend_domid);
printf("\t\t\t(frontend_domid %d)\n", domid);
printf("\t\t\t(devid %d)\n", d_config->vfbs[i].devid);
- printf("\t\t\t(vnc %d)\n", d_config->vfbs[i].vnc.enable);
+ printf("\t\t\t(vnc %s)\n",
+ libxl_defbool_to_string(d_config->vfbs[i].vnc.enable));
printf("\t\t\t(vnclisten %s)\n", d_config->vfbs[i].vnc.listen);
printf("\t\t\t(vncdisplay %d)\n", d_config->vfbs[i].vnc.display);
- printf("\t\t\t(vncunused %d)\n", d_config->vfbs[i].vnc.findunused);
+ printf("\t\t\t(vncunused %s)\n",
+ libxl_defbool_to_string(d_config->vfbs[i].vnc.findunused));
printf("\t\t\t(keymap %s)\n", d_config->vfbs[i].keymap);
- printf("\t\t\t(sdl %d)\n", d_config->vfbs[i].sdl.enable);
- printf("\t\t\t(opengl %d)\n", d_config->vfbs[i].sdl.opengl);
+ printf("\t\t\t(sdl %s)\n",
+ libxl_defbool_to_string(d_config->vfbs[i].sdl.enable));
+ printf("\t\t\t(opengl %s)\n",
+ libxl_defbool_to_string(d_config->vfbs[i].sdl.opengl));
printf("\t\t\t(display %s)\n", d_config->vfbs[i].sdl.display);
printf("\t\t\t(xauthority %s)\n", d_config->vfbs[i].sdl.xauthority);
printf("\t\t)\n");
@@ -950,7 +963,7 @@ skip:
break;
*p2 = '\0';
if (!strcmp(p, "vnc")) {
- vfb->vnc.enable = atoi(p2 + 1);
+ libxl_defbool_set(&vfb->vnc.enable, atoi(p2 + 1));
} else if (!strcmp(p, "vnclisten")) {
free(vfb->vnc.listen);
vfb->vnc.listen = strdup(p2 + 1);
@@ -960,14 +973,14 @@ skip:
} else if (!strcmp(p, "vncdisplay")) {
vfb->vnc.display = atoi(p2 + 1);
} else if (!strcmp(p, "vncunused")) {
- vfb->vnc.findunused = atoi(p2 + 1);
+ libxl_defbool_set(&vfb->vnc.findunused, atoi(p2 + 1));
} else if (!strcmp(p, "keymap")) {
free(vfb->keymap);
vfb->keymap = strdup(p2 + 1);
} else if (!strcmp(p, "sdl")) {
- vfb->sdl.enable = atoi(p2 + 1);
+ libxl_defbool_set(&vfb->sdl.enable, atoi(p2 + 1));
} else if (!strcmp(p, "opengl")) {
- vfb->sdl.opengl = atoi(p2 + 1);
+ libxl_defbool_set(&vfb->sdl.opengl, atoi(p2 + 1));
} else if (!strcmp(p, "display")) {
free(vfb->sdl.display);
vfb->sdl.display = strdup(p2 + 1);
@@ -1152,41 +1165,35 @@ skip_vfb:
#undef parse_extra_args
if (c_info->type == LIBXL_DOMAIN_TYPE_HVM) {
- if (!xlu_cfg_get_long (config, "stdvga", &l, 0))
- b_info->u.hvm.stdvga = l;
- if (!xlu_cfg_get_long (config, "vnc", &l, 0))
- b_info->u.hvm.vnc.enable = l;
- xlu_cfg_replace_string (config, "vnclisten",
&b_info->u.hvm.vnc.listen, 0);
- xlu_cfg_replace_string (config, "vncpasswd",
&b_info->u.hvm.vnc.passwd, 0);
+ xlu_cfg_get_defbool(config, "stdvga", &b_info->u.hvm.stdvga, 0);
+ xlu_cfg_get_defbool(config, "vnc", &b_info->u.hvm.vnc.enable, 0);
+ xlu_cfg_replace_string (config, "vnclisten",
+ &b_info->u.hvm.vnc.listen, 0);
+ xlu_cfg_replace_string (config, "vncpasswd",
+ &b_info->u.hvm.vnc.passwd, 0);
if (!xlu_cfg_get_long (config, "vncdisplay", &l, 0))
b_info->u.hvm.vnc.display = l;
- if (!xlu_cfg_get_long (config, "vncunused", &l, 0))
- b_info->u.hvm.vnc.findunused = l;
+ xlu_cfg_get_defbool(config, "vncunused",
+ &b_info->u.hvm.vnc.findunused, 0);
xlu_cfg_replace_string (config, "keymap", &b_info->u.hvm.keymap, 0);
- if (!xlu_cfg_get_long (config, "sdl", &l, 0))
- b_info->u.hvm.sdl.enable = l;
- if (!xlu_cfg_get_long (config, "opengl", &l, 0))
- b_info->u.hvm.sdl.opengl = l;
- if (!xlu_cfg_get_long (config, "spice", &l, 0))
- b_info->u.hvm.spice.enable = l;
+ xlu_cfg_get_defbool(config, "sdl", &b_info->u.hvm.sdl.enable, 0);
+ xlu_cfg_get_defbool(config, "opengl", &b_info->u.hvm.sdl.opengl, 0);
+ xlu_cfg_get_defbool (config, "spice", &b_info->u.hvm.spice.enable, 0);
if (!xlu_cfg_get_long (config, "spiceport", &l, 0))
b_info->u.hvm.spice.port = l;
if (!xlu_cfg_get_long (config, "spicetls_port", &l, 0))
b_info->u.hvm.spice.tls_port = l;
xlu_cfg_replace_string (config, "spicehost",
&b_info->u.hvm.spice.host, 0);
- if (!xlu_cfg_get_long (config, "spicedisable_ticketing", &l, 0))
- b_info->u.hvm.spice.disable_ticketing = l;
+ xlu_cfg_get_defbool(config, "spicedisable_ticketing",
+ &b_info->u.hvm.spice.disable_ticketing, 0);
xlu_cfg_replace_string (config, "spicepasswd",
&b_info->u.hvm.spice.passwd, 0);
- if (!xlu_cfg_get_long (config, "spiceagent_mouse", &l, 0))
- b_info->u.hvm.spice.agent_mouse = l;
- else
- b_info->u.hvm.spice.agent_mouse = 1;
- if (!xlu_cfg_get_long (config, "nographic", &l, 0))
- b_info->u.hvm.nographic = l;
- if (!xlu_cfg_get_long (config, "gfx_passthru", &l, 0))
- b_info->u.hvm.gfx_passthru = l;
+ xlu_cfg_get_defbool(config, "spiceagent_mouse",
+ &b_info->u.hvm.spice.agent_mouse, 0);
+ xlu_cfg_get_defbool(config, "nographic", &b_info->u.hvm.nographic, 0);
+ xlu_cfg_get_defbool(config, "gfx_passthru",
+ &b_info->u.hvm.gfx_passthru, 0);
xlu_cfg_replace_string (config, "serial", &b_info->u.hvm.serial, 0);
xlu_cfg_replace_string (config, "boot", &b_info->u.hvm.boot, 0);
xlu_cfg_get_defbool(config, "usb", &b_info->u.hvm.usb, 0);
diff -r 81def18dfda0 -r b8426902efa0 tools/ocaml/libs/xl/genwrap.py
--- a/tools/ocaml/libs/xl/genwrap.py Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/ocaml/libs/xl/genwrap.py Fri Jan 13 17:04:57 2012 +0000
@@ -10,6 +10,7 @@ builtins = {
"int": ("int", "%(c)s =
Int_val(%(o)s)", "Val_int(%(c)s)" ),
"char *": ("string", "%(c)s =
dup_String_val(gc, %(o)s)", "caml_copy_string(%(c)s)"),
"libxl_domid": ("domid", "%(c)s =
Int_val(%(o)s)", "Val_int(%(c)s)" ),
+ "libxl_defbool": ("bool option", "%(c)s =
Defbool_val(%(o)s)", "Val_defbool(%(c)s)" ),
"libxl_uuid": ("int array", "Uuid_val(gc, lg,
&%(c)s, %(o)s)", "Val_uuid(&%(c)s)"),
"libxl_key_value_list": ("(string * string) list", None,
None),
"libxl_mac": ("int array", "Mac_val(gc, lg,
&%(c)s, %(o)s)", "Val_mac(&%(c)s)"),
diff -r 81def18dfda0 -r b8426902efa0 tools/ocaml/libs/xl/xenlight_stubs.c
--- a/tools/ocaml/libs/xl/xenlight_stubs.c Fri Jan 13 16:17:49 2012 +0000
+++ b/tools/ocaml/libs/xl/xenlight_stubs.c Fri Jan 13 17:04:57 2012 +0000
@@ -130,6 +130,19 @@ static int string_string_tuple_array_val
#endif
+/* Option type support as per
http://www.linux-nantes.org/~fmonnier/ocaml/ocaml-wrapping-c.php */
+#define Val_none Val_int(0)
+#define Some_val(v) Field(v,0)
+
+static value Val_some(value v)
+{
+ CAMLparam1(v);
+ CAMLlocal1(some);
+ some = caml_alloc(1, 0);
+ Store_field(some, 0, v);
+ CAMLreturn(some);
+}
+
static value Val_mac (libxl_mac *c_val)
{
CAMLparam0();
@@ -182,6 +195,33 @@ static int Uuid_val(caml_gc *gc, struct
CAMLreturn(0);
}
+static value Val_defbool(libxl_defbool c_val)
+{
+ CAMLparam0();
+ CAMLlocal1(v);
+
+ if (libxl_defbool_is_default(c_val))
+ v = Val_none;
+ else {
+ bool b = libxl_defbool_val(c_val);
+ v = Val_some(b ? Val_bool(true) : Val_bool(false));
+ }
+ CAMLreturn(v);
+}
+
+static libxl_defbool Defbool_val(value v)
+{
+ CAMLparam1(v);
+ libxl_defbool db;
+ if (v == Val_none)
+ libxl_defbool_unset(&db);
+ else {
+ bool b = Bool_val(Some_val(v));
+ libxl_defbool_set(&db, b);
+ }
+ return db;
+}
+
static value Val_hwcap(libxl_hwcap *c_val)
{
CAMLparam0();
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |