/* SPDX-License-Identifier: GPL-2.0 */ #ifndef XENBUS_H__ #define XENBUS_H__ #include #include 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__ */