diff options
author | Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> | 2020-08-06 12:42:53 +0300 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-08-14 15:18:30 -0400 |
commit | 60e49ff1f8a0b8d48b0d12bad94d0dfb8fdbeec8 (patch) | |
tree | 23255c3baca7f7d4924f18eea54ca171ccf6f5a2 /include/xen | |
parent | e87dfb0526be231de89b299531a0e637d343fccd (diff) | |
download | u-boot-60e49ff1f8a0b8d48b0d12bad94d0dfb8fdbeec8.tar.gz u-boot-60e49ff1f8a0b8d48b0d12bad94d0dfb8fdbeec8.tar.bz2 u-boot-60e49ff1f8a0b8d48b0d12bad94d0dfb8fdbeec8.zip |
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.h | 116 |
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__ */ |