# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1286967244 -3600
# Node ID 606b0eb2caa7ebe328ab4d2252086274cf917b46
# Parent 6eaab829768109e57f31a141efa9d06689e64670
libxl: remove xs_writev function
It isn't actually being used to write a vector at the only callsite
and can easily be implemented using xs_write.
Furthermore the old implementation used to leak both the key and value
strings.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
committer: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
tools/libxl/libxl.c | 30 +++++++++++++++++-------------
tools/libxl/libxl_internal.h | 2 --
tools/libxl/libxl_xshelp.c | 20 --------------------
3 files changed, 17 insertions(+), 35 deletions(-)
diff -r 6eaab8297681 -r 606b0eb2caa7 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Wed Oct 13 11:45:26 2010 +0100
+++ b/tools/libxl/libxl.c Wed Oct 13 11:54:04 2010 +0100
@@ -1409,22 +1409,26 @@ static void dm_xenstore_record_pid(void
static void dm_xenstore_record_pid(void *for_spawn, pid_t innerchild)
{
libxl_device_model_starting *starting = for_spawn;
- char *kvs[3];
- int rc;
struct xs_handle *xsh;
-
+ char *path = NULL, *pid = NULL;
+ int len;
+
+ if (asprintf(&path, "%s/%s", starting->dom_path, "image/device-model-pid")
< 0)
+ goto out;
+
+ len = asprintf(&pid, "%d", innerchild);
+ if (len < 0)
+ goto out;
+
+ /* we mustn't use the parent's handle in the child */
xsh = xs_daemon_open();
- /* we mustn't use the parent's handle in the child */
-
- kvs[0] = "image/device-model-pid";
- if (asprintf(&kvs[1], "%d", innerchild) < 0)
- return;
- kvs[2] = NULL;
-
- rc = xs_writev(xsh, XBT_NULL, starting->dom_path, kvs);
- if (rc)
- return;
+
+ xs_write(xsh, XBT_NULL, path, pid, len);
+
xs_daemon_close(xsh);
+out:
+ free(path);
+ free(pid);
}
static int libxl_vfb_and_vkb_from_device_model_info(libxl_ctx *ctx,
diff -r 6eaab8297681 -r 606b0eb2caa7 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Wed Oct 13 11:45:26 2010 +0100
+++ b/tools/libxl/libxl_internal.h Wed Oct 13 11:54:04 2010 +0100
@@ -108,8 +108,6 @@ typedef struct {
#define PCI_BAR_IO 0x01
#define PRINTF_ATTRIBUTE(x, y) __attribute__((format(printf, x, y)))
-
-_hidden int xs_writev(struct xs_handle *xsh, xs_transaction_t t, char *dir,
char *kvs[]);
typedef struct {
/* mini-GC */
diff -r 6eaab8297681 -r 606b0eb2caa7 tools/libxl/libxl_xshelp.c
--- a/tools/libxl/libxl_xshelp.c Wed Oct 13 11:45:26 2010 +0100
+++ b/tools/libxl/libxl_xshelp.c Wed Oct 13 11:54:04 2010 +0100
@@ -23,26 +23,6 @@
#include "libxl.h"
#include "libxl_internal.h"
-
-int xs_writev(struct xs_handle *xsh, xs_transaction_t t, char *dir, char
*kvs[])
-{
- char *path;
- int i;
-
- if (!kvs)
- return 0;
-
- for (i = 0; kvs[i] != NULL; i += 2) {
- if (asprintf(&path, "%s/%s", dir, kvs[i]) < 0)
- return -1;
- if (path && kvs[i + 1]) {
- int length = strlen(kvs[i + 1]);
- xs_write(xsh, t, path, kvs[i + 1], length);
- }
- free(path);
- }
- return 0;
-}
char **libxl__xs_kvs_of_flexarray(libxl__gc *gc, flexarray_t *array, int
length)
{
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|