117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
| /* 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__ */
 |