mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
hw/xen: Add xs_node_read() helper function
This returns the full contents of the node, having created the node path from the printf-style format string provided in its arguments. This will save various callers from having to do so for themselves (and from using xs_node_scanf() with the non-portable %ms format string. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> [remove double newline and constify trace parameters] Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
This commit is contained in:
parent
7433709a14
commit
e6cdeee959
3 changed files with 32 additions and 0 deletions
|
@ -39,6 +39,7 @@ xs_node_create(const char *node) "%s"
|
||||||
xs_node_destroy(const char *node) "%s"
|
xs_node_destroy(const char *node) "%s"
|
||||||
xs_node_vprintf(char *path, char *value) "%s %s"
|
xs_node_vprintf(char *path, char *value) "%s %s"
|
||||||
xs_node_vscanf(char *path, char *value) "%s %s"
|
xs_node_vscanf(char *path, char *value) "%s %s"
|
||||||
|
xs_node_read(const char *path, const char *value) "%s %s"
|
||||||
xs_node_watch(char *path) "%s"
|
xs_node_watch(char *path) "%s"
|
||||||
xs_node_unwatch(char *path) "%s"
|
xs_node_unwatch(char *path) "%s"
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,28 @@ int xs_node_scanf(struct qemu_xs_handle *h, xs_transaction_t tid,
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *xs_node_read(struct qemu_xs_handle *h, xs_transaction_t tid,
|
||||||
|
unsigned int *len, Error **errp,
|
||||||
|
const char *path_fmt, ...)
|
||||||
|
{
|
||||||
|
char *path, *value;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, path_fmt);
|
||||||
|
path = g_strdup_vprintf(path_fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
value = qemu_xen_xs_read(h, tid, path, len);
|
||||||
|
trace_xs_node_read(path, value);
|
||||||
|
if (!value) {
|
||||||
|
error_setg_errno(errp, errno, "failed to read from '%s'", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(path);
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
struct qemu_xs_watch *xs_node_watch(struct qemu_xs_handle *h, const char *node,
|
struct qemu_xs_watch *xs_node_watch(struct qemu_xs_handle *h, const char *node,
|
||||||
const char *key, xs_watch_fn fn,
|
const char *key, xs_watch_fn fn,
|
||||||
void *opaque, Error **errp)
|
void *opaque, Error **errp)
|
||||||
|
|
|
@ -38,6 +38,15 @@ int xs_node_scanf(struct qemu_xs_handle *h, xs_transaction_t tid,
|
||||||
const char *fmt, ...)
|
const char *fmt, ...)
|
||||||
G_GNUC_SCANF(6, 7);
|
G_GNUC_SCANF(6, 7);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unlike other functions here, the printf-formatted path_fmt is for
|
||||||
|
* the XenStore path, not the contents of the node.
|
||||||
|
*/
|
||||||
|
char *xs_node_read(struct qemu_xs_handle *h, xs_transaction_t tid,
|
||||||
|
unsigned int *len, Error **errp,
|
||||||
|
const char *path_fmt, ...)
|
||||||
|
G_GNUC_PRINTF(5, 6);
|
||||||
|
|
||||||
/* Watch node/key unless node is empty, in which case watch key */
|
/* Watch node/key unless node is empty, in which case watch key */
|
||||||
struct qemu_xs_watch *xs_node_watch(struct qemu_xs_handle *h, const char *node,
|
struct qemu_xs_watch *xs_node_watch(struct qemu_xs_handle *h, const char *node,
|
||||||
const char *key, xs_watch_fn fn,
|
const char *key, xs_watch_fn fn,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue