sysfs_remove_file(hypervisor_kobj, &uuid_attr.attr);
}
+/* Host UUID */
+
+static ssize_t host_uuid_show(struct hyp_sysfs_attr *attr, char *buffer)
+{
+ char *vm, *val;
+ int ret;
+ extern int xenstored_ready;
+
+ if (!xenstored_ready)
+ return -EBUSY;
+
+ vm = xenbus_read(XBT_NIL, "vm", "", NULL);
+ if (IS_ERR(vm))
+ return PTR_ERR(vm);
+ val = xenbus_read(XBT_NIL, vm, "host_uuid", NULL);
+ kfree(vm);
+ if (IS_ERR(val))
+ return PTR_ERR(val);
+ ret = sprintf(buffer, "%s\n", val);
+ kfree(val);
+ return ret;
+}
+
+HYPERVISOR_ATTR_RO(host_uuid);
+
+static int __init xen_sysfs_host_uuid_init(void)
+{
+ return sysfs_create_file(hypervisor_kobj, &host_uuid_attr.attr);
+}
+
+static void xen_sysfs_host_uuid_destroy(void)
+{
+ sysfs_remove_file(hypervisor_kobj, &host_uuid_attr.attr);
+}
+
/* xen compilation attributes */
static ssize_t compiler_show(struct hyp_sysfs_attr *attr, char *buffer)
ret = xen_sysfs_uuid_init();
if (ret)
goto uuid_out;
+ ret = xen_sysfs_host_uuid_init();
+ if (ret)
+ goto host_uuid_out;
ret = xen_properties_init();
if (ret)
goto prop_out;
prop_out:
xen_sysfs_uuid_destroy();
uuid_out:
+ xen_sysfs_host_uuid_destroy();
+host_uuid_out:
xen_compilation_destroy();
comp_out:
xen_sysfs_version_destroy();
xen_properties_destroy();
xen_compilation_destroy();
xen_sysfs_uuid_destroy();
+ xen_sysfs_host_uuid_destroy();
xen_sysfs_version_destroy();
xen_sysfs_type_destroy();