123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- /** @file
- Method declarations and structures for accessing the XenStore
- Copyright (C) 2005 Rusty Russell, IBM Corporation
- Copyright (C) 2005 XenSource Ltd.
- Copyright (C) 2009,2010 Spectra Logic Corporation
- Copyright (C) 2014, Citrix Ltd.
- This file may be distributed separately from the Linux kernel, or
- incorporated into other software packages, subject to the following license:
- SPDX-License-Identifier: MIT
- **/
- #ifndef _XEN_XENSTORE_XENSTOREVAR_H
- #define _XEN_XENSTORE_XENSTOREVAR_H
- #include "XenBusDxe.h"
- #include <IndustryStandard/Xen/io/xs_wire.h>
- typedef struct _XENSTORE_WATCH XENSTORE_WATCH;
- /**
- Fetch the contents of a directory in the XenStore.
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the path to read.
- @param Node The basename of the path to read.
- @param DirectoryCountPtr The returned number of directory entries.
- @param DirectoryListPtr An array of directory entry strings.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- @note The results buffer is alloced and should be free'd by the
- caller.
- **/
- XENSTORE_STATUS
- XenStoreListDirectory (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- OUT UINT32 *DirectoryCountPtr,
- OUT CONST CHAR8 ***DirectoryListPtr
- );
- /**
- Determine if a path exists in the XenStore.
- @param Transaction The XenStore transaction covering this request.
- @param Directory The dirname of the path to read.
- @param Node The basename of the path to read.
- @retval TRUE The path exists.
- @retval FALSE The path does not exist or an error occurred attempting
- to make that determination.
- **/
- BOOLEAN
- XenStorePathExists (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Directory,
- IN CONST CHAR8 *Node
- );
- /**
- Get the contents of a single "file". Returns the contents in *Result which
- should be freed after use. The length of the value in bytes is returned in
- *LenPtr.
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the file to read.
- @param Node The basename of the file to read.
- @param LenPtr The amount of data read.
- @param Result The returned contents from this file.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- @note The results buffer is malloced and should be free'd by the
- caller.
- **/
- XENSTORE_STATUS
- XenStoreRead (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- OUT UINT32 *LenPtr OPTIONAL,
- OUT VOID **Result
- );
- /**
- Write to a single file.
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the file to write.
- @param Node The basename of the file to write.
- @param Str The NUL terminated string of data to write.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- **/
- XENSTORE_STATUS
- XenStoreWrite (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- IN CONST CHAR8 *Str
- );
- /**
- Remove a file or directory (directories must be empty).
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the directory to remove.
- @param Node The basename of the directory to remove.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- **/
- XENSTORE_STATUS
- XenStoreRemove (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node
- );
- /**
- Start a transaction.
- Changes by others will not be seen during the lifetime of this
- transaction, and changes will not be visible to others until it
- is committed (XenStoreTransactionEnd).
- @param Transaction The returned transaction.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- **/
- XENSTORE_STATUS
- XenStoreTransactionStart (
- OUT XENSTORE_TRANSACTION *Transaction
- );
- /**
- End a transaction.
- @param Transaction The transaction to end/commit.
- @param Abort If TRUE, the transaction is discarded
- instead of committed.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
- **/
- XENSTORE_STATUS
- XenStoreTransactionEnd (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN BOOLEAN Abort
- );
- /**
- Printf formatted write to a XenStore file.
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the path to read.
- @param Node The basename of the path to read.
- @param FormatString AsciiSPrint format string followed by a variable number
- of arguments.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of write failure.
- **/
- XENSTORE_STATUS
- EFIAPI
- XenStoreSPrint (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- IN CONST CHAR8 *FormatString,
- ...
- );
- /**
- VA_LIST version of XenStoreSPrint().
- @param Transaction The XenStore transaction covering this request.
- @param DirectoryPath The dirname of the path to read.
- @param Node The basename of the path to read.
- @param FormatString Printf format string.
- @param Marker VA_LIST of printf arguments.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of write failure.
- **/
- XENSTORE_STATUS
- EFIAPI
- XenStoreVSPrint (
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- IN CONST CHAR8 *FormatString,
- IN VA_LIST Marker
- );
- /**
- Register a XenStore watch.
- XenStore watches allow a client to be notified via a callback (embedded
- within the watch object) of changes to an object in the XenStore.
- @param DirectoryPath The dirname of the path to watch.
- @param Node The basename of the path to watch.
- @param WatchPtr A returned XENSTORE_WATCH pointer.
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of write failure. EEXIST errors from the
- XenStore are suppressed, allowing multiple, physically different,
- xenbus_watch objects, to watch the same path in the XenStore.
- **/
- XENSTORE_STATUS
- XenStoreRegisterWatch (
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- OUT XENSTORE_WATCH **WatchPtr
- );
- /**
- Unregister a XenStore watch.
- @param Watch An XENSTORE_WATCH object previously returned by a successful
- call to XenStoreRegisterWatch ().
- **/
- VOID
- XenStoreUnregisterWatch (
- IN XENSTORE_WATCH *Watch
- );
- /**
- Allocate and return the XenStore path string <DirectoryPath>/<Node>. If name
- is the NUL string, the returned value contains the path string
- <DirectoryPath>.
- @param DirectoryPath The NUL terminated directory prefix for new path.
- @param Node The NUL terminated basename for the new path.
- @return A buffer containing the joined path.
- */
- CHAR8 *
- XenStoreJoin (
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node
- );
- /**
- Initialize the XenStore states and rings.
- @param Dev A pointer to a XENBUS_DEVICE instance.
- @return EFI_SUCCESS if everything went smoothly.
- **/
- EFI_STATUS
- XenStoreInit (
- XENBUS_DEVICE *Dev
- );
- /**
- Deinitialize the XenStore states and rings.
- @param Dev A pointer to a XENBUS_DEVICE instance.
- **/
- VOID
- XenStoreDeinit (
- IN XENBUS_DEVICE *Dev
- );
- //
- // XENBUS protocol
- //
- XENSTORE_STATUS
- EFIAPI
- XenBusWaitForWatch (
- IN XENBUS_PROTOCOL *This,
- IN VOID *Token
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreRead (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Node,
- OUT VOID **Value
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreBackendRead (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Node,
- OUT VOID **Value
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreRemove (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Node
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreTransactionStart (
- IN XENBUS_PROTOCOL *This,
- OUT XENSTORE_TRANSACTION *Transaction
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreTransactionEnd (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN BOOLEAN Abort
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusXenStoreSPrint (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *DirectoryPath,
- IN CONST CHAR8 *Node,
- IN CONST CHAR8 *FormatString,
- ...
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusRegisterWatch (
- IN XENBUS_PROTOCOL *This,
- IN CONST CHAR8 *Node,
- OUT VOID **Token
- );
- XENSTORE_STATUS
- EFIAPI
- XenBusRegisterWatchBackend (
- IN XENBUS_PROTOCOL *This,
- IN CONST CHAR8 *Node,
- OUT VOID **Token
- );
- VOID
- EFIAPI
- XenBusUnregisterWatch (
- IN XENBUS_PROTOCOL *This,
- IN VOID *Token
- );
- #endif /* _XEN_XENSTORE_XENSTOREVAR_H */
|