mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
minios: add xenbus_read_uuid
Similar to xenbus_read_integer, this function reads a xenstore path and parses it as a uuid. See include/xenbus.h for details. Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Committed-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
d9740f716d
commit
a8e67280ca
2 files changed
+31
No files matched your search
@@ -95,6 +95,10 @@ char *xenbus_transaction_end(xenbus_transaction_t, int abort,
|
||||
/* Read path and parse it as an integer. Returns -1 on error. */
|
||||
int xenbus_read_integer(const char *path);
|
||||
|
||||
/* Read path and parse it as 16 byte uuid. Returns 1 if
|
||||
* read and parsing were successful, 0 if not */
|
||||
int xenbus_read_uuid(const char* path, unsigned char uuid[16]);
|
||||
|
||||
/* Contraction of snprintf and xenbus_write(path/node). */
|
||||
char* xenbus_printf(xenbus_transaction_t xbt,
|
||||
const char* node, const char* path,
|
||||
|
||||
@@ -719,6 +719,33 @@ int xenbus_read_integer(const char *path)
|
||||
return t;
|
||||
}
|
||||
|
||||
int xenbus_read_uuid(const char* path, unsigned char uuid[16]) {
|
||||
char * res, *buf;
|
||||
res = xenbus_read(XBT_NIL, path, &buf);
|
||||
if(res) {
|
||||
printk("Failed to read %s.\n", path);
|
||||
free(res);
|
||||
return 0;
|
||||
}
|
||||
if(strlen(buf) != ((2*16)+4) /* 16 hex bytes and 4 hyphens */
|
||||
|| sscanf(buf,
|
||||
"%2hhx%2hhx%2hhx%2hhx-"
|
||||
"%2hhx%2hhx-"
|
||||
"%2hhx%2hhx-"
|
||||
"%2hhx%2hhx-"
|
||||
"%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx",
|
||||
uuid, uuid + 1, uuid + 2, uuid + 3,
|
||||
uuid + 4, uuid + 5, uuid + 6, uuid + 7,
|
||||
uuid + 8, uuid + 9, uuid + 10, uuid + 11,
|
||||
uuid + 12, uuid + 13, uuid + 14, uuid + 15) != 16) {
|
||||
printk("Xenbus path %s value %s is not a uuid!\n", path, buf);
|
||||
free(buf);
|
||||
return 0;
|
||||
}
|
||||
free(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
char* xenbus_printf(xenbus_transaction_t xbt,
|
||||
const char* node, const char* path,
|
||||
const char* fmt, ...)
|
||||
|
||||