mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
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@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
This commit is contained in:
1 parent
ab223ad3d6
commit
f51aae032a
3 files changed
+14
-32
No files matched your search
+14
-10
@@ -1409,22 +1409,26 @@ static char ** libxl_build_device_model_args(libxl__gc *gc,
|
||||
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;
|
||||
|
||||
xsh = xs_daemon_open();
|
||||
/* we mustn't use the parent's handle in the child */
|
||||
xsh = xs_daemon_open();
|
||||
|
||||
kvs[0] = "image/device-model-pid";
|
||||
if (asprintf(&kvs[1], "%d", innerchild) < 0)
|
||||
return;
|
||||
kvs[2] = NULL;
|
||||
xs_write(xsh, XBT_NULL, path, pid, len);
|
||||
|
||||
rc = xs_writev(xsh, XBT_NULL, starting->dom_path, kvs);
|
||||
if (rc)
|
||||
return;
|
||||
xs_daemon_close(xsh);
|
||||
out:
|
||||
free(path);
|
||||
free(pid);
|
||||
}
|
||||
|
||||
static int libxl_vfb_and_vkb_from_device_model_info(libxl_ctx *ctx,
|
||||
|
||||
@@ -109,8 +109,6 @@ typedef struct {
|
||||
|
||||
#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 */
|
||||
int alloc_maxsize;
|
||||
|
||||
@@ -24,26 +24,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)
|
||||
{
|
||||
char **kvs;
|
||||
|
||||