flexarray_t *front;
flexarray_t *back;
char *backend_type;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
int devid;
libxl__device device;
int major, minor, rc;
case PHYSTYPE_PHY: {
libxl__device_physdisk_major_minor(disk->physpath, &major, &minor);
- flexarray_set(back, boffset++, "physical-device");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%x:%x", major, minor));
+ flexarray_append(back, "physical-device");
+ flexarray_append(back, libxl__sprintf(&gc, "%x:%x", major, minor));
- flexarray_set(back, boffset++, "params");
- flexarray_set(back, boffset++, disk->physpath);
+ flexarray_append(back, "params");
+ flexarray_append(back, disk->physpath);
device.backend_kind = DEVICE_VBD;
break;
rc = ERROR_FAIL;
goto out_free;
}
- flexarray_set(back, boffset++, "tapdisk-params");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%s:%s", libxl__device_disk_string_of_phystype(disk->phystype), disk->physpath));
- flexarray_set(back, boffset++, "params");
- flexarray_set(back, boffset++, libxl__strdup(&gc, dev));
+ flexarray_append(back, "tapdisk-params");
+ flexarray_append(back, libxl__sprintf(&gc, "%s:%s", libxl__device_disk_string_of_phystype(disk->phystype), disk->physpath));
+ flexarray_append(back, "params");
+ flexarray_append(back, libxl__strdup(&gc, dev));
backend_type = "phy";
libxl__device_physdisk_major_minor(dev, &major, &minor);
- flexarray_set(back, boffset++, "physical-device");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%x:%x", major, minor));
+ flexarray_append(back, "physical-device");
+ flexarray_append(back, libxl__sprintf(&gc, "%x:%x", major, minor));
device.backend_kind = DEVICE_VBD;
break;
}
- flexarray_set(back, boffset++, "params");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%s:%s",
+ flexarray_append(back, "params");
+ flexarray_append(back, libxl__sprintf(&gc, "%s:%s",
libxl__device_disk_string_of_phystype(disk->phystype), disk->physpath));
if (libxl__blktap_enabled(&gc))
goto out_free;
}
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", disk->domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "removable");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", (disk->unpluggable) ? 1 : 0));
- flexarray_set(back, boffset++, "bootable");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "dev");
- flexarray_set(back, boffset++, disk->virtpath);
- flexarray_set(back, boffset++, "type");
- flexarray_set(back, boffset++, backend_type);
- flexarray_set(back, boffset++, "mode");
- flexarray_set(back, boffset++, disk->readwrite ? "w" : "r");
-
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", disk->backend_domid));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(front, foffset++, "virtual-device");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", devid));
- flexarray_set(front, foffset++, "device-type");
- flexarray_set(front, foffset++, disk->is_cdrom ? "cdrom" : "disk");
+ flexarray_append(back, "frontend-id");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", disk->domid));
+ flexarray_append(back, "online");
+ flexarray_append(back, "1");
+ flexarray_append(back, "removable");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", (disk->unpluggable) ? 1 : 0));
+ flexarray_append(back, "bootable");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(back, "state");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(back, "dev");
+ flexarray_append(back, disk->virtpath);
+ flexarray_append(back, "type");
+ flexarray_append(back, backend_type);
+ flexarray_append(back, "mode");
+ flexarray_append(back, disk->readwrite ? "w" : "r");
+
+ flexarray_append(front, "backend-id");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", disk->backend_domid));
+ flexarray_append(front, "state");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(front, "virtual-device");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", devid));
+ flexarray_append(front, "device-type");
+ flexarray_append(front, disk->is_cdrom ? "cdrom" : "disk");
if (0 /* protocol != native*/) {
- flexarray_set(front, foffset++, "protocol");
- flexarray_set(front, foffset++, "x86_32-abi"); /* hardcoded ! */
+ flexarray_append(front, "protocol");
+ flexarray_append(front, "x86_32-abi"); /* hardcoded ! */
}
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
rc = 0;
libxl__gc gc = LIBXL_INIT_GC(ctx);
flexarray_t *front;
flexarray_t *back;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
libxl__device device;
char *dompath, **l;
unsigned int nb, rc;
device.domid = nic->domid;
device.kind = DEVICE_VIF;
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", nic->domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "script");
- flexarray_set(back, boffset++, nic->script);
- flexarray_set(back, boffset++, "mac");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(back, "frontend-id");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", nic->domid));
+ flexarray_append(back, "online");
+ flexarray_append(back, "1");
+ flexarray_append(back, "state");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(back, "script");
+ flexarray_append(back, nic->script);
+ flexarray_append(back, "mac");
+ flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
nic->mac[0], nic->mac[1], nic->mac[2],
nic->mac[3], nic->mac[4], nic->mac[5]));
- flexarray_set(back, boffset++, "bridge");
- flexarray_set(back, boffset++, libxl__strdup(&gc, nic->bridge));
- flexarray_set(back, boffset++, "handle");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", nic->devid));
-
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", nic->backend_domid));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(front, foffset++, "handle");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", nic->devid));
- flexarray_set(front, foffset++, "mac");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(back, "bridge");
+ flexarray_append(back, libxl__strdup(&gc, nic->bridge));
+ flexarray_append(back, "handle");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", nic->devid));
+
+ flexarray_append(front, "backend-id");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", nic->backend_domid));
+ flexarray_append(front, "state");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(front, "handle");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", nic->devid));
+ flexarray_append(front, "mac");
+ flexarray_append(front, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
nic->mac[0], nic->mac[1], nic->mac[2],
nic->mac[3], nic->mac[4], nic->mac[5]));
if (0 /* protocol != native*/) {
- flexarray_set(front, foffset++, "protocol");
- flexarray_set(front, foffset++, "x86_32-abi"); /* hardcoded ! */
+ flexarray_append(front, "protocol");
+ flexarray_append(front, "x86_32-abi"); /* hardcoded ! */
}
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
/* FIXME: wait for plug */
rc = 0;
{
libxl__gc gc = LIBXL_INIT_GC(ctx);
flexarray_t *front, *back;
- unsigned int boffset = 0, foffset = 0;
libxl__device device;
char *dompath, *dom, **l;
unsigned int nb;
device.domid = net2->domid;
device.kind = DEVICE_VIF2;
- flexarray_set(back, boffset++, "domain");
- flexarray_set(back, boffset++, dom);
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", net2->domid));
+ flexarray_append(back, "domain");
+ flexarray_append(back, dom);
+ flexarray_append(back, "frontend-id");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", net2->domid));
- flexarray_set(back, boffset++, "local-trusted");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", net2->back_trusted));
- flexarray_set(back, boffset++, "mac");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(back, "local-trusted");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", net2->back_trusted));
+ flexarray_append(back, "mac");
+ flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
net2->back_mac[0], net2->back_mac[1],
net2->back_mac[2], net2->back_mac[3],
net2->back_mac[4], net2->back_mac[5]));
- flexarray_set(back, boffset++, "remote-trusted");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", net2->trusted));
- flexarray_set(back, boffset++, "remote-mac");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(back, "remote-trusted");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", net2->trusted));
+ flexarray_append(back, "remote-mac");
+ flexarray_append(back, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
net2->front_mac[0], net2->front_mac[1],
net2->front_mac[2], net2->front_mac[3],
net2->front_mac[4], net2->front_mac[5]));
- flexarray_set(back, boffset++, "max-bypasses");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", net2->max_bypasses));
- flexarray_set(back, boffset++, "filter-mac");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", !!(net2->filter_mac)));
- flexarray_set(back, boffset++, "handle");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", net2->devid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, "1");
-
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", net2->backend_domid));
-
- flexarray_set(front, foffset++, "local-trusted");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", net2->trusted));
- flexarray_set(front, foffset++, "mac");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(back, "max-bypasses");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", net2->max_bypasses));
+ flexarray_append(back, "filter-mac");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", !!(net2->filter_mac)));
+ flexarray_append(back, "handle");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", net2->devid));
+ flexarray_append(back, "online");
+ flexarray_append(back, "1");
+ flexarray_append(back, "state");
+ flexarray_append(back, "1");
+
+ flexarray_append(front, "backend-id");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", net2->backend_domid));
+
+ flexarray_append(front, "local-trusted");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", net2->trusted));
+ flexarray_append(front, "mac");
+ flexarray_append(front, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
net2->front_mac[0], net2->front_mac[1],
net2->front_mac[2], net2->front_mac[3],
net2->front_mac[4], net2->front_mac[5]));
- flexarray_set(front, foffset++, "remote-trusted");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", net2->back_trusted));
- flexarray_set(front, foffset++, "remote-mac");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
+ flexarray_append(front, "remote-trusted");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", net2->back_trusted));
+ flexarray_append(front, "remote-mac");
+ flexarray_append(front, libxl__sprintf(&gc, "%02x:%02x:%02x:%02x:%02x:%02x",
net2->back_mac[0], net2->back_mac[1],
net2->back_mac[2], net2->back_mac[3],
net2->back_mac[4], net2->back_mac[5]));
- flexarray_set(front, foffset++, "filter-mac");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", !!(net2->filter_mac)));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, "1");
+ flexarray_append(front, "filter-mac");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", !!(net2->filter_mac)));
+ flexarray_append(front, "state");
+ flexarray_append(front, "1");
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
/* FIXME: wait for plug */
rc = 0;
libxl__gc gc = LIBXL_INIT_GC(ctx);
flexarray_t *front;
flexarray_t *back;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
libxl__device device;
int rc;
device.domid = console->domid;
device.kind = DEVICE_CONSOLE;
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", console->domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "domain");
- flexarray_set(back, boffset++, libxl__domid_to_name(&gc, domid));
- flexarray_set(back, boffset++, "protocol");
- flexarray_set(back, boffset++, LIBXL_XENCONSOLE_PROTOCOL);
-
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", console->backend_domid));
- flexarray_set(front, foffset++, "limit");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", LIBXL_XENCONSOLE_LIMIT));
- flexarray_set(front, foffset++, "type");
+ flexarray_append(back, "frontend-id");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", console->domid));
+ flexarray_append(back, "online");
+ flexarray_append(back, "1");
+ flexarray_append(back, "state");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(back, "domain");
+ flexarray_append(back, libxl__domid_to_name(&gc, domid));
+ flexarray_append(back, "protocol");
+ flexarray_append(back, LIBXL_XENCONSOLE_PROTOCOL);
+
+ flexarray_append(front, "backend-id");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", console->backend_domid));
+ flexarray_append(front, "limit");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", LIBXL_XENCONSOLE_LIMIT));
+ flexarray_append(front, "type");
if (console->consback == LIBXL_CONSBACK_XENCONSOLED)
- flexarray_set(front, foffset++, "xenconsoled");
+ flexarray_append(front, "xenconsoled");
else
- flexarray_set(front, foffset++, "ioemu");
- flexarray_set(front, foffset++, "output");
- flexarray_set(front, foffset++, console->output);
+ flexarray_append(front, "ioemu");
+ flexarray_append(front, "output");
+ flexarray_append(front, console->output);
if (device.devid == 0) {
if (console->build_state == NULL) {
rc = ERROR_INVAL;
goto out_free;
}
- flexarray_set(front, foffset++, "port");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%"PRIu32, console->build_state->console_port));
- flexarray_set(front, foffset++, "ring-ref");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%lu", console->build_state->console_mfn));
+ flexarray_append(front, "port");
+ flexarray_append(front, libxl__sprintf(&gc, "%"PRIu32, console->build_state->console_port));
+ flexarray_append(front, "ring-ref");
+ flexarray_append(front, libxl__sprintf(&gc, "%lu", console->build_state->console_mfn));
} else {
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(front, foffset++, "protocol");
- flexarray_set(front, foffset++, LIBXL_XENCONSOLE_PROTOCOL);
+ flexarray_append(front, "state");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(front, "protocol");
+ flexarray_append(front, LIBXL_XENCONSOLE_PROTOCOL);
}
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
rc = 0;
out_free:
flexarray_free(back);
libxl__gc gc = LIBXL_INIT_GC(ctx);
flexarray_t *front;
flexarray_t *back;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
libxl__device device;
int rc;
device.domid = vkb->domid;
device.kind = DEVICE_VKBD;
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vkb->domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "domain");
- flexarray_set(back, boffset++, libxl__domid_to_name(&gc, domid));
+ flexarray_append(back, "frontend-id");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", vkb->domid));
+ flexarray_append(back, "online");
+ flexarray_append(back, "1");
+ flexarray_append(back, "state");
+ flexarray_append(back, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(back, "domain");
+ flexarray_append(back, libxl__domid_to_name(&gc, domid));
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", vkb->backend_domid));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", 1));
+ flexarray_append(front, "backend-id");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", vkb->backend_domid));
+ flexarray_append(front, "state");
+ flexarray_append(front, libxl__sprintf(&gc, "%d", 1));
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
rc = 0;
out_free:
flexarray_free(back);
libxl__gc gc = LIBXL_INIT_GC(ctx);
flexarray_t *front;
flexarray_t *back;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
libxl__device device;
int rc;
device.domid = vfb->domid;
device.kind = DEVICE_VFB;
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", 1));
- flexarray_set(back, boffset++, "domain");
- flexarray_set(back, boffset++, libxl__domid_to_name(&gc, domid));
- flexarray_set(back, boffset++, "vnc");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->vnc));
- flexarray_set(back, boffset++, "vnclisten");
- flexarray_set(back, boffset++, vfb->vnclisten);
- flexarray_set(back, boffset++, "vncpasswd");
- flexarray_set(back, boffset++, vfb->vncpasswd);
- flexarray_set(back, boffset++, "vncdisplay");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->vncdisplay));
- flexarray_set(back, boffset++, "vncunused");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->vncunused));
- flexarray_set(back, boffset++, "sdl");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->sdl));
- flexarray_set(back, boffset++, "opengl");
- flexarray_set(back, boffset++, libxl__sprintf(&gc, "%d", vfb->opengl));
+ flexarray_vappend(back, "frontend-id", libxl__sprintf(&gc, "%d", vfb->domid), NULL);
+ flexarray_vappend(back, "online", "1", NULL);
+ flexarray_vappend(back, "state", libxl__sprintf(&gc, "%d", 1), NULL);
+ flexarray_vappend(back, "domain", libxl__domid_to_name(&gc, domid), NULL);
+ flexarray_vappend(back, "vnc", libxl__sprintf(&gc, "%d", vfb->vnc), NULL);
+ flexarray_vappend(back, "vnclisten", vfb->vnclisten, NULL);
+ flexarray_append(back, "vncpasswd");
+ flexarray_append(back, vfb->vncpasswd);
+ flexarray_vappend(back, "vncdisplay", libxl__sprintf(&gc, "%d", vfb->vncdisplay), NULL);
+ flexarray_vappend(back, "vncunused", libxl__sprintf(&gc, "%d", vfb->vncunused), NULL);
+ flexarray_vappend(back, "sdl", libxl__sprintf(&gc, "%d", vfb->sdl), NULL);
+ flexarray_vappend(back, "opengl", libxl__sprintf(&gc, "%d", vfb->opengl), NULL);
if (vfb->xauthority) {
- flexarray_set(back, boffset++, "xauthority");
- flexarray_set(back, boffset++, vfb->xauthority);
+ flexarray_vappend(back, "xauthority", vfb->xauthority, NULL);
}
if (vfb->display) {
- flexarray_set(back, boffset++, "display");
- flexarray_set(back, boffset++, vfb->display);
+ flexarray_vappend(back, "display", vfb->display, NULL);
}
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", vfb->backend_domid));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(&gc, "%d", 1));
+ flexarray_vappend(front, "backend-id", libxl__sprintf(&gc, "%d", vfb->backend_domid), NULL);
+ flexarray_vappend(front, "state", libxl__sprintf(&gc, "%d", 1), NULL);
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(&gc, back, boffset),
- libxl__xs_kvs_of_flexarray(&gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(&gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(&gc, front, front->count));
rc = 0;
out_free:
flexarray_free(front);
libxl_device_nic *vifs,
int num_vifs)
{
- int num = 0, i;
+ int i;
flexarray_t *dm_args;
dm_args = flexarray_make(16, 1);
if (!dm_args)
return NULL;
- flexarray_set(dm_args, num++, "qemu-dm");
- flexarray_set(dm_args, num++, "-d");
+ flexarray_vappend(dm_args, "qemu-dm", "-d", libxl__sprintf(gc, "%d", info->domid), NULL);
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->domid));
+ if (info->dom_name)
+ flexarray_vappend(dm_args, "-domain-name", info->dom_name, NULL);
- if (info->dom_name) {
- flexarray_set(dm_args, num++, "-domain-name");
- flexarray_set(dm_args, num++, info->dom_name);
- }
if (info->vnc || info->vncdisplay || info->vnclisten || info->vncunused) {
- flexarray_set(dm_args, num++, "-vnc");
+ flexarray_append(dm_args, "-vnc");
if (info->vncdisplay) {
if (info->vnclisten && strchr(info->vnclisten, ':') == NULL) {
- flexarray_set(
- dm_args, num++,
+ flexarray_append(dm_args,
libxl__sprintf(gc, "%s:%d%s",
info->vnclisten,
info->vncdisplay,
info->vncpasswd ? ",password" : ""));
} else {
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "127.0.0.1:%d", info->vncdisplay));
+ flexarray_append(dm_args, libxl__sprintf(gc, "127.0.0.1:%d", info->vncdisplay));
}
} else if (info->vnclisten) {
if (strchr(info->vnclisten, ':') != NULL) {
- flexarray_set(dm_args, num++, info->vnclisten);
+ flexarray_append(dm_args, info->vnclisten);
} else {
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%s:0", info->vnclisten));
+ flexarray_append(dm_args, libxl__sprintf(gc, "%s:0", info->vnclisten));
}
} else {
- flexarray_set(dm_args, num++, "127.0.0.1:0");
+ flexarray_append(dm_args, "127.0.0.1:0");
}
if (info->vncunused) {
- flexarray_set(dm_args, num++, "-vncunused");
+ flexarray_append(dm_args, "-vncunused");
}
}
if (info->sdl) {
- flexarray_set(dm_args, num++, "-sdl");
+ flexarray_append(dm_args, "-sdl");
if (!info->opengl) {
- flexarray_set(dm_args, num++, "-disable-opengl");
+ flexarray_append(dm_args, "-disable-opengl");
}
}
if (info->keymap) {
- flexarray_set(dm_args, num++, "-k");
- flexarray_set(dm_args, num++, info->keymap);
+ flexarray_vappend(dm_args, "-k", info->keymap, NULL);
}
if (info->nographic && (!info->sdl && !info->vnc)) {
- flexarray_set(dm_args, num++, "-nographic");
+ flexarray_append(dm_args, "-nographic");
}
if (info->serial) {
- flexarray_set(dm_args, num++, "-serial");
- flexarray_set(dm_args, num++, info->serial);
+ flexarray_vappend(dm_args, "-serial", info->serial, NULL);
}
if (info->type == XENFV) {
int ioemu_vifs = 0;
if (info->videoram) {
- flexarray_set(dm_args, num++, "-videoram");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->videoram));
+ flexarray_vappend(dm_args, "-videoram", libxl__sprintf(gc, "%d", info->videoram), NULL);
}
if (info->stdvga) {
- flexarray_set(dm_args, num++, "-std-vga");
+ flexarray_append(dm_args, "-std-vga");
}
if (info->boot) {
- flexarray_set(dm_args, num++, "-boot");
- flexarray_set(dm_args, num++, info->boot);
+ flexarray_vappend(dm_args, "-boot", info->boot, NULL);
}
if (info->usb || info->usbdevice) {
- flexarray_set(dm_args, num++, "-usb");
+ flexarray_append(dm_args, "-usb");
if (info->usbdevice) {
- flexarray_set(dm_args, num++, "-usbdevice");
- flexarray_set(dm_args, num++, info->usbdevice);
+ flexarray_vappend(dm_args, "-usbdevice", info->usbdevice, NULL);
}
}
if (info->soundhw) {
- flexarray_set(dm_args, num++, "-soundhw");
- flexarray_set(dm_args, num++, info->soundhw);
+ flexarray_vappend(dm_args, "-soundhw", info->soundhw, NULL);
}
if (info->apic) {
- flexarray_set(dm_args, num++, "-acpi");
+ flexarray_append(dm_args, "-acpi");
}
if (info->vcpus > 1) {
- flexarray_set(dm_args, num++, "-vcpus");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->vcpus));
+ flexarray_vappend(dm_args, "-vcpus", libxl__sprintf(gc, "%d", info->vcpus), NULL);
}
if (info->vcpu_avail) {
- flexarray_set(dm_args, num++, "-vcpu_avail");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "0x%x", info->vcpu_avail));
+ flexarray_vappend(dm_args, "-vcpu_avail", libxl__sprintf(gc, "0x%x", info->vcpu_avail), NULL);
}
for (i = 0; i < num_vifs; i++) {
if (vifs[i].nictype == NICTYPE_IOEMU) {
ifname = libxl__sprintf(gc, "tap%d.%d", info->domid, vifs[i].devid);
else
ifname = vifs[i].ifname;
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "nic,vlan=%d,macaddr=%s,model=%s",
- vifs[i].devid, smac, vifs[i].model));
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "tap,vlan=%d,ifname=%s,bridge=%s,script=no",
- vifs[i].devid, ifname, vifs[i].bridge));
+ flexarray_vappend(dm_args,
+ "-net", libxl__sprintf(gc, "nic,vlan=%d,macaddr=%s,model=%s",
+ vifs[i].devid, smac, vifs[i].model),
+ "-net", libxl__sprintf(gc, "tap,vlan=%d,ifname=%s,bridge=%s,script=no",
+ vifs[i].devid, ifname, vifs[i].bridge), NULL);
ioemu_vifs++;
}
}
/* If we have no emulated nics, tell qemu not to create any */
if ( ioemu_vifs == 0 ) {
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, "none");
+ flexarray_vappend(dm_args, "-net", "none", NULL);
}
}
if (info->saved_state) {
- flexarray_set(dm_args, num++, "-loadvm");
- flexarray_set(dm_args, num++, info->saved_state);
+ flexarray_vappend(dm_args, "-loadvm", info->saved_state, NULL);
}
for (i = 0; info->extra && info->extra[i] != NULL; i++)
- flexarray_set(dm_args, num++, info->extra[i]);
- flexarray_set(dm_args, num++, "-M");
+ flexarray_append(dm_args, info->extra[i]);
+ flexarray_append(dm_args, "-M");
if (info->type == XENPV)
- flexarray_set(dm_args, num++, "xenpv");
+ flexarray_append(dm_args, "xenpv");
else
- flexarray_set(dm_args, num++, "xenfv");
- flexarray_set(dm_args, num++, NULL);
+ flexarray_append(dm_args, "xenfv");
+ flexarray_append(dm_args, NULL);
return (char **) flexarray_contents(dm_args);
}
libxl_device_nic *vifs,
int num_vifs)
{
- int num = 0, i;
flexarray_t *dm_args;
- int nb;
libxl_device_disk *disks;
+ int nb, i;
dm_args = flexarray_make(16, 1);
if (!dm_args)
return NULL;
- flexarray_set(dm_args, num++, libxl__strdup(gc, info->device_model));
-
- flexarray_set(dm_args, num++, "-xen-domid");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->domid));
+ flexarray_vappend(dm_args, libxl__strdup(gc, info->device_model),
+ "-xen-domid", libxl__sprintf(gc, "%d", info->domid), NULL);
if (info->type == XENPV) {
- flexarray_set(dm_args, num++, "-xen-attach");
+ flexarray_append(dm_args, "-xen-attach");
}
if (info->dom_name) {
- flexarray_set(dm_args, num++, "-name");
- flexarray_set(dm_args, num++, info->dom_name);
+ flexarray_vappend(dm_args, "-name", info->dom_name, NULL);
}
if (info->vnc || info->vncdisplay || info->vnclisten || info->vncunused) {
int display = 0;
const char *listen = "127.0.0.1";
- flexarray_set(dm_args, num++, "-vnc");
+ flexarray_append(dm_args, "-vnc");
if (info->vncdisplay) {
display = info->vncdisplay;
}
if (strchr(listen, ':') != NULL)
- flexarray_set(dm_args, num++,
+ flexarray_append(dm_args,
libxl__sprintf(gc, "%s%s", listen,
info->vncunused ? ",to=99" : ""));
else
- flexarray_set(dm_args, num++,
+ flexarray_append(dm_args,
libxl__sprintf(gc, "%s:%d%s", listen, display,
info->vncunused ? ",to=99" : ""));
}
if (info->sdl) {
- flexarray_set(dm_args, num++, "-sdl");
+ flexarray_append(dm_args, "-sdl");
}
if (info->type == XENPV && !info->nographic) {
- flexarray_set(dm_args, num++, "-vga");
- flexarray_set(dm_args, num++, "xenfb");
+ flexarray_vappend(dm_args, "-vga", "xenfb", NULL);
}
if (info->keymap) {
- flexarray_set(dm_args, num++, "-k");
- flexarray_set(dm_args, num++, info->keymap);
+ flexarray_vappend(dm_args, "-k", info->keymap, NULL);
}
if (info->nographic && (!info->sdl && !info->vnc)) {
- flexarray_set(dm_args, num++, "-nographic");
+ flexarray_append(dm_args, "-nographic");
}
if (info->serial) {
- flexarray_set(dm_args, num++, "-serial");
- flexarray_set(dm_args, num++, info->serial);
+ flexarray_vappend(dm_args, "-serial", info->serial, NULL);
}
if (info->type == XENFV) {
int ioemu_vifs = 0;
if (info->stdvga) {
- flexarray_set(dm_args, num++, "-vga");
- flexarray_set(dm_args, num++, "std");
+ flexarray_vappend(dm_args, "-vga", "std", NULL);
}
if (info->boot) {
- flexarray_set(dm_args, num++, "-boot");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "order=%s", info->boot));
+ flexarray_vappend(dm_args, "-boot", libxl__sprintf(gc, "order=%s", info->boot), NULL);
}
if (info->usb || info->usbdevice) {
- flexarray_set(dm_args, num++, "-usb");
+ flexarray_append(dm_args, "-usb");
if (info->usbdevice) {
- flexarray_set(dm_args, num++, "-usbdevice");
- flexarray_set(dm_args, num++, info->usbdevice);
+ flexarray_vappend(dm_args, "-usbdevice", info->usbdevice, NULL);
}
}
if (info->soundhw) {
- flexarray_set(dm_args, num++, "-soundhw");
- flexarray_set(dm_args, num++, info->soundhw);
+ flexarray_vappend(dm_args, "-soundhw", info->soundhw, NULL);
}
if (!info->apic) {
- flexarray_set(dm_args, num++, "-no-acpi");
+ flexarray_append(dm_args, "-no-acpi");
}
if (info->vcpus > 1) {
- flexarray_set(dm_args, num++, "-smp");
+ flexarray_append(dm_args, "-smp");
if (info->vcpu_avail)
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d,maxcpus=%d", info->vcpus, info->vcpu_avail));
+ flexarray_append(dm_args, libxl__sprintf(gc, "%d,maxcpus=%d", info->vcpus, info->vcpu_avail));
else
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->vcpus));
+ flexarray_append(dm_args, libxl__sprintf(gc, "%d", info->vcpus));
}
for (i = 0; i < num_vifs; i++) {
if (vifs[i].nictype == NICTYPE_IOEMU) {
} else {
ifname = vifs[i].ifname;
}
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "nic,vlan=%d,macaddr=%s,model=%s",
+ flexarray_append(dm_args, "-net");
+ flexarray_append(dm_args, libxl__sprintf(gc, "nic,vlan=%d,macaddr=%s,model=%s",
vifs[i].devid, smac, vifs[i].model));
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "tap,vlan=%d,ifname=%s,script=no",
+ flexarray_append(dm_args, "-net");
+ flexarray_append(dm_args, libxl__sprintf(gc, "tap,vlan=%d,ifname=%s,script=no",
vifs[i].devid, ifname));
ioemu_vifs++;
}
}
/* If we have no emulated nics, tell qemu not to create any */
if ( ioemu_vifs == 0 ) {
- flexarray_set(dm_args, num++, "-net");
- flexarray_set(dm_args, num++, "none");
+ flexarray_append(dm_args, "-net");
+ flexarray_append(dm_args, "none");
}
}
if (info->saved_state) {
- flexarray_set(dm_args, num++, "-loadvm");
- flexarray_set(dm_args, num++, info->saved_state);
+ flexarray_append(dm_args, "-loadvm");
+ flexarray_append(dm_args, info->saved_state);
}
for (i = 0; info->extra && info->extra[i] != NULL; i++)
- flexarray_set(dm_args, num++, info->extra[i]);
- flexarray_set(dm_args, num++, "-M");
+ flexarray_append(dm_args, info->extra[i]);
+ flexarray_append(dm_args, "-M");
if (info->type == XENPV)
- flexarray_set(dm_args, num++, "xenpv");
+ flexarray_append(dm_args, "xenpv");
else
- flexarray_set(dm_args, num++, "xenfv");
+ flexarray_append(dm_args, "xenfv");
/* RAM Size */
- flexarray_set(dm_args, num++, "-m");
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->target_ram));
+ flexarray_append(dm_args, "-m");
+ flexarray_append(dm_args, libxl__sprintf(gc, "%d", info->target_ram));
if (info->type == XENFV) {
disks = libxl_device_disk_list(libxl__gc_owner(gc), info->domid, &nb);
for (i; i < nb; i++) {
if (disks[i].is_cdrom) {
- flexarray_set(dm_args, num++, "-cdrom");
- flexarray_set(dm_args, num++, libxl__strdup(gc, disks[i].physpath));
+ flexarray_append(dm_args, "-cdrom");
+ flexarray_append(dm_args, libxl__strdup(gc, disks[i].physpath));
} else {
- flexarray_set(dm_args, num++, libxl__sprintf(gc, "-%s", disks[i].virtpath));
- flexarray_set(dm_args, num++, libxl__strdup(gc, disks[i].physpath));
+ flexarray_append(dm_args, libxl__sprintf(gc, "-%s", disks[i].virtpath));
+ flexarray_append(dm_args, libxl__strdup(gc, disks[i].physpath));
}
libxl_device_disk_destroy(&disks[i]);
}
free(disks);
}
- flexarray_set(dm_args, num++, NULL);
+ flexarray_append(dm_args, NULL);
return (char **) flexarray_contents(dm_args);
}
libxl_ctx *ctx = libxl__gc_owner(gc);
flexarray_t *front;
flexarray_t *back;
- unsigned int boffset = 0;
- unsigned int foffset = 0;
libxl__device device;
int i;
device.domid = domid;
device.kind = DEVICE_PCI;
- flexarray_set(back, boffset++, "frontend-id");
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", domid));
- flexarray_set(back, boffset++, "online");
- flexarray_set(back, boffset++, "1");
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", 1));
- flexarray_set(back, boffset++, "domain");
- flexarray_set(back, boffset++, libxl__domid_to_name(gc, domid));
+ flexarray_vappend(back, "frontend-id", libxl__sprintf(gc, "%d", domid),
+ "online", "1", "state", libxl__sprintf(gc, "%d", 1),
+ "domain", libxl__domid_to_name(gc, domid), NULL);
for (i = 0; i < num; i++) {
- flexarray_set(back, boffset++, libxl__sprintf(gc, "key-%d", i));
- flexarray_set(back, boffset++, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "dev-%d", i));
- flexarray_set(back, boffset++, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
+ flexarray_append(back, libxl__sprintf(gc, "key-%d", i));
+ flexarray_append(back, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
+ flexarray_append(back, libxl__sprintf(gc, "dev-%d", i));
+ flexarray_append(back, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
if (pcidev->vdevfn) {
- flexarray_set(back, boffset++, libxl__sprintf(gc, "vdevfn-%d", i));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%x", pcidev->vdevfn));
+ flexarray_vappend(back, libxl__sprintf(gc, "vdevfn-%d", i), libxl__sprintf(gc, "%x", pcidev->vdevfn), NULL);
}
- flexarray_set(back, boffset++, libxl__sprintf(gc, "opts-%d", i));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "msitranslate=%d,power_mgmt=%d", pcidev->msitranslate, pcidev->power_mgmt));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "state-%d", i));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", 1));
+ flexarray_append(back, libxl__sprintf(gc, "opts-%d", i));
+ flexarray_append(back, libxl__sprintf(gc, "msitranslate=%d,power_mgmt=%d", pcidev->msitranslate, pcidev->power_mgmt));
+ flexarray_vappend(back, libxl__sprintf(gc, "state-%d", i), libxl__sprintf(gc, "%d", 1), NULL);
}
- flexarray_set(back, boffset++, "num_devs");
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", num));
-
- flexarray_set(front, foffset++, "backend-id");
- flexarray_set(front, foffset++, libxl__sprintf(gc, "%d", 0));
- flexarray_set(front, foffset++, "state");
- flexarray_set(front, foffset++, libxl__sprintf(gc, "%d", 1));
+ flexarray_vappend(back, "num_devs", libxl__sprintf(gc, "%d", num),
+ "backend-id", libxl__sprintf(gc, "%d", 0),
+ "state", libxl__sprintf(gc, "%d", 1), NULL);
libxl__device_generic_add(ctx, &device,
- libxl__xs_kvs_of_flexarray(gc, back, boffset),
- libxl__xs_kvs_of_flexarray(gc, front, foffset));
+ libxl__xs_kvs_of_flexarray(gc, back, back->count),
+ libxl__xs_kvs_of_flexarray(gc, front, front->count));
flexarray_free(back);
flexarray_free(front);
flexarray_t *back;
char *num_devs, *be_path;
int num = 0;
- unsigned int boffset = 0;
xs_transaction_t t;
be_path = libxl__sprintf(gc, "%s/backend/pci/%d/0", libxl__xs_get_dompath(gc, 0), domid);
LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Adding new pci device to xenstore");
num = atoi(num_devs);
- flexarray_set(back, boffset++, libxl__sprintf(gc, "key-%d", num));
- flexarray_set(back, boffset++, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "dev-%d", num));
- flexarray_set(back, boffset++, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
+ flexarray_append(back, libxl__sprintf(gc, "key-%d", num));
+ flexarray_append(back, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
+ flexarray_append(back, libxl__sprintf(gc, "dev-%d", num));
+ flexarray_append(back, libxl__sprintf(gc, PCI_BDF, pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func));
if (pcidev->vdevfn) {
- flexarray_set(back, boffset++, libxl__sprintf(gc, "vdevfn-%d", num));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%x", pcidev->vdevfn));
+ flexarray_append(back, libxl__sprintf(gc, "vdevfn-%d", num));
+ flexarray_append(back, libxl__sprintf(gc, "%x", pcidev->vdevfn));
}
- flexarray_set(back, boffset++, libxl__sprintf(gc, "opts-%d", num));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "msitranslate=%d,power_mgmt=%d", pcidev->msitranslate, pcidev->power_mgmt));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "state-%d", num));
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", 1));
- flexarray_set(back, boffset++, "num_devs");
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", num + 1));
- flexarray_set(back, boffset++, "state");
- flexarray_set(back, boffset++, libxl__sprintf(gc, "%d", 7));
+ flexarray_append(back, libxl__sprintf(gc, "opts-%d", num));
+ flexarray_append(back, libxl__sprintf(gc, "msitranslate=%d,power_mgmt=%d", pcidev->msitranslate, pcidev->power_mgmt));
+ flexarray_vappend(back, libxl__sprintf(gc, "state-%d", num), libxl__sprintf(gc, "%d", 1), NULL);
+ flexarray_vappend(back, "num_devs", libxl__sprintf(gc, "%d", num + 1), NULL);
+ flexarray_vappend(back, "state", libxl__sprintf(gc, "%d", 7), NULL);
retry_transaction:
t = xs_transaction_start(ctx->xsh);
libxl__xs_writev(gc, t, be_path,
- libxl__xs_kvs_of_flexarray(gc, back, boffset));
+ libxl__xs_kvs_of_flexarray(gc, back, back->count));
if (!xs_transaction_end(ctx->xsh, t, 0))
if (errno == EAGAIN)
goto retry_transaction;