|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 1/5] libxl: introduce libxl__device_model_xs_path
Factor out libxl__vsprintf. Use it to implement
libxl__device_model_xs_patch helper to return xenstore path for device
model to avoid handcoded paths.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
Changes in v3:
1. Factor out libxl__vsprintf.
---
tools/libxl/libxl_internal.c | 40 ++++++++++++++++++++++++++++++++++------
tools/libxl/libxl_internal.h | 4 ++++
2 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/tools/libxl/libxl_internal.c b/tools/libxl/libxl_internal.c
index ddc68ab..c2c67bd 100644
--- a/tools/libxl/libxl_internal.c
+++ b/tools/libxl/libxl_internal.c
@@ -127,21 +127,33 @@ void *libxl__realloc(libxl__gc *gc, void *ptr, size_t
new_size)
return new_ptr;
}
-char *libxl__sprintf(libxl__gc *gc, const char *fmt, ...)
+char *libxl__vsprintf(libxl__gc *gc, const char *fmt, va_list ap)
{
char *s;
- va_list ap;
+ va_list aq;
int ret;
- va_start(ap, fmt);
- ret = vsnprintf(NULL, 0, fmt, ap);
- va_end(ap);
+ va_copy(aq, ap);
+ ret = vsnprintf(NULL, 0, fmt, aq);
+ va_end(aq);
assert(ret >= 0);
s = libxl__zalloc(gc, ret + 1);
+ va_copy(aq, ap);
+ ret = vsnprintf(s, ret + 1, fmt, aq);
+ va_end(aq);
+
+ return s;
+}
+
+char *libxl__sprintf(libxl__gc *gc, const char *fmt, ...)
+{
+ char *s;
+ va_list ap;
+
va_start(ap, fmt);
- ret = vsnprintf(s, ret + 1, fmt, ap);
+ s = libxl__vsprintf(gc, fmt, ap);
va_end(ap);
return s;
@@ -555,6 +567,22 @@ void libxl__update_domain_configuration(libxl__gc *gc,
dst->b_info.video_memkb = src->b_info.video_memkb;
}
+char *libxl__device_model_xs_path(libxl__gc *gc, uint32_t dm_domid,
+ uint32_t domid, const char *format, ...)
+{
+ char *s, *fmt;
+ va_list ap;
+
+ fmt = GCSPRINTF("/local/domain/%u/device-model/%u%s", dm_domid,
+ domid, format);
+
+ va_start(ap, format);
+ s = libxl__vsprintf(gc, fmt, ap);
+ va_end(ap);
+
+ return s;
+}
+
/*
* Local variables:
* mode: C
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 934465a..2f952d4 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -521,6 +521,7 @@ _hidden void *libxl__realloc(libxl__gc *gc_opt, void *ptr,
size_t new_size) NN1;
/* print @fmt into an allocated string large enoughto contain the result.
* (similar to gc'd asprintf(3)). */
_hidden char *libxl__sprintf(libxl__gc *gc_opt, const char *fmt, ...)
PRINTF_ATTRIBUTE(2, 3) NN1;
+_hidden char *libxl__vsprintf(libxl__gc *gc, const char *format, va_list ap);
/* duplicate the string @c (similar to a gc'd strdup(3)). */
_hidden char *libxl__strdup(libxl__gc *gc_opt, const char *c) NN1;
/* duplicate at most @n bytes of string @c (similar to a gc'd strndup(3)). */
@@ -1794,6 +1795,9 @@ _hidden libxl__json_object *libxl__json_parse(libxl__gc
*gc_opt, const char *s);
_hidden int libxl__device_model_version_running(libxl__gc *gc, uint32_t domid);
/* Return the system-wide default device model */
_hidden libxl_device_model_version libxl__default_device_model(libxl__gc *gc);
+_hidden char *libxl__device_model_xs_path(libxl__gc *gc, uint32_t dm_domid,
+ uint32_t domid,
+ const char *format, ...);
/* Check how executes hotplug script currently */
int libxl__hotplug_settings(libxl__gc *gc, xs_transaction_t t);
--
1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |