summaryrefslogtreecommitdiff
path: root/include/xen
diff options
context:
space:
mode:
authorOleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>2020-08-06 12:42:53 +0300
committerTom Rini <trini@konsulko.com>2020-08-14 15:18:30 -0400
commit60e49ff1f8a0b8d48b0d12bad94d0dfb8fdbeec8 (patch)
tree23255c3baca7f7d4924f18eea54ca171ccf6f5a2 /include/xen
parente87dfb0526be231de89b299531a0e637d343fccd (diff)
xen: Port Xen bus driver from mini-os
Make required updates to run on u-boot and strip test code. Signed-off-by: Anastasiia Lukianenko <anastasiia_lukianenko@epam.com> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Diffstat (limited to 'include/xen')
-rw-r--r--include/xen/xenbus.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h
new file mode 100644
index 0000000000..3ed7fd5733
--- /dev/null
+++ b/include/xen/xenbus.h
@@ -0,0 +1,116 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef XENBUS_H__
+#define XENBUS_H__
+
+#include <xen/interface/xen.h>
+#include <xen/interface/io/xenbus.h>
+
+typedef unsigned long xenbus_transaction_t;
+#define XBT_NIL ((xenbus_transaction_t)0)
+
+extern u32 xenbus_evtchn;
+
+/* Initialize the XenBus system. */
+void init_xenbus(void);
+/* Finalize the XenBus system. */
+void fini_xenbus(void);
+
+/**
+ * xenbus_read() - Read the value associated with a path.
+ *
+ * Returns a malloc'd error string on failure and sets *value to NULL.
+ * On success, *value is set to a malloc'd copy of the value.
+ */
+char *xenbus_read(xenbus_transaction_t xbt, const char *path, char **value);
+
+char *xenbus_wait_for_state_change(const char *path, XenbusState *state);
+char *xenbus_switch_state(xenbus_transaction_t xbt, const char *path,
+ XenbusState state);
+
+/**
+ * xenbus_write() - Associates a value with a path.
+ *
+ * Returns a malloc'd error string on failure.
+ */
+char *xenbus_write(xenbus_transaction_t xbt, const char *path,
+ const char *value);
+
+/**
+ * xenbus_rm() - Removes the value associated with a path.
+ *
+ * Returns a malloc'd error string on failure.
+ */
+char *xenbus_rm(xenbus_transaction_t xbt, const char *path);
+
+/**
+ * xenbus_ls() - List the contents of a directory.
+ *
+ * Returns a malloc'd error string on failure and sets *contents to NULL.
+ * On success, *contents is set to a malloc'd array of pointers to malloc'd
+ * strings. The array is NULL terminated. May block.
+ */
+char *xenbus_ls(xenbus_transaction_t xbt, const char *prefix, char ***contents);
+
+/**
+ * xenbus_get_perms() - Reads permissions associated with a path.
+ *
+ * Returns a malloc'd error string on failure and sets *value to NULL.
+ * On success, *value is set to a malloc'd copy of the value.
+ */
+char *xenbus_get_perms(xenbus_transaction_t xbt, const char *path, char **value);
+
+/**
+ * xenbus_set_perms() - Sets the permissions associated with a path.
+ *
+ * Returns a malloc'd error string on failure.
+ */
+char *xenbus_set_perms(xenbus_transaction_t xbt, const char *path, domid_t dom,
+ char perm);
+
+/**
+ * xenbus_transaction_start() - Start a xenbus transaction.
+ *
+ * Returns the transaction in xbt on success or a malloc'd error string
+ * otherwise.
+ */
+char *xenbus_transaction_start(xenbus_transaction_t *xbt);
+
+/**
+ * xenbus_transaction_end() - End a xenbus transaction.
+ *
+ * Returns a malloc'd error string if it fails. Abort says whether the
+ * transaction should be aborted.
+ * Returns 1 in *retry if the transaction should be retried.
+ */
+char *xenbus_transaction_end(xenbus_transaction_t xbt, int abort,
+ int *retry);
+
+/**
+ * xenbus_read_integer() - Read path and parse it as an integer.
+ *
+ * Returns -1 on error.
+ */
+int xenbus_read_integer(const char *path);
+
+/**
+ * xenbus_read_uuid() - 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]);
+
+/**
+ * xenbus_printf() - Contraction of snprintf and xenbus_write(path/node).
+ */
+char *xenbus_printf(xenbus_transaction_t xbt,
+ const char *node, const char *path,
+ const char *fmt, ...)
+ __attribute__((__format__(printf, 4, 5)));
+
+/**
+ * xenbus_get_self_id() - Utility function to figure out our domain id
+ */
+domid_t xenbus_get_self_id(void);
+
+#endif /* XENBUS_H__ */