summaryrefslogtreecommitdiff
path: root/OvmfPkg/Include/Protocol/XenBus.h
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/Include/Protocol/XenBus.h')
-rw-r--r--OvmfPkg/Include/Protocol/XenBus.h416
1 files changed, 0 insertions, 416 deletions
diff --git a/OvmfPkg/Include/Protocol/XenBus.h b/OvmfPkg/Include/Protocol/XenBus.h
deleted file mode 100644
index 3509691e03..0000000000
--- a/OvmfPkg/Include/Protocol/XenBus.h
+++ /dev/null
@@ -1,416 +0,0 @@
-
-/** @file
- XenBus protocol to be used between the XenBus bus driver and Xen PV devices.
-
- DISCLAIMER: the XENBUS_PROTOCOL introduced here is a work in progress, and
- should not be used outside of the EDK II tree.
-
- This protocol provide the necessary for a Xen PV driver frontend to
- communicate with the bus driver, and perform several task to
- initialize/shutdown a PV device and perform IO with a PV backend.
-
- Copyright (C) 2014, Citrix Ltd.
-
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __PROTOCOL_XENBUS_H__
-#define __PROTOCOL_XENBUS_H__
-
-#define XENBUS_PROTOCOL_GUID \
- {0x3d3ca290, 0xb9a5, 0x11e3, {0xb7, 0x5d, 0xb8, 0xac, 0x6f, 0x7d, 0x65, 0xe6}}
-
-///
-/// Forward declaration
-///
-typedef struct _XENBUS_PROTOCOL XENBUS_PROTOCOL;
-
-typedef enum xenbus_state XenBusState;
-
-typedef struct
-{
- UINT32 Id;
-} XENSTORE_TRANSACTION;
-
-#define XST_NIL ((XENSTORE_TRANSACTION *) NULL)
-
-typedef enum {
- XENSTORE_STATUS_SUCCESS = 0,
- XENSTORE_STATUS_FAIL,
- XENSTORE_STATUS_EINVAL,
- XENSTORE_STATUS_EACCES,
- XENSTORE_STATUS_EEXIST,
- XENSTORE_STATUS_EISDIR,
- XENSTORE_STATUS_ENOENT,
- XENSTORE_STATUS_ENOMEM,
- XENSTORE_STATUS_ENOSPC,
- XENSTORE_STATUS_EIO,
- XENSTORE_STATUS_ENOTEMPTY,
- XENSTORE_STATUS_ENOSYS,
- XENSTORE_STATUS_EROFS,
- XENSTORE_STATUS_EBUSY,
- XENSTORE_STATUS_EAGAIN,
- XENSTORE_STATUS_EISCONN,
- XENSTORE_STATUS_E2BIG
-} XENSTORE_STATUS;
-
-
-#include <IndustryStandard/Xen/grant_table.h>
-#include <IndustryStandard/Xen/event_channel.h>
-
-///
-/// Function prototypes
-///
-
-/**
- Get the contents of the node Node of the PV device. Returns the contents in
- *Result which should be freed after use.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Transaction The XenStore transaction covering this request.
- @param Node The basename of the file to 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.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_READ)(
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Node,
- OUT VOID **Result
- );
-
-/**
- Get the contents of the node Node of the PV device's backend. Returns the
- contents in *Result which should be freed after use.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Transaction The XenStore transaction covering this request.
- @param Node The basename of the file to 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.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_BACKEND_READ)(
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Node,
- OUT VOID **Result
- );
-
-/**
- Print formatted write to a XenStore node.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @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.
- @param Format 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.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_PRINTF) (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN CONST CHAR8 *Directory,
- IN CONST CHAR8 *Node,
- IN CONST CHAR8 *Format,
- ...
- );
-
-/**
- Remove a node or directory (directories must be empty) of the PV driver's
- subdirectory.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Transaction The XenStore transaction covering this request.
- @param Node The basename of the node to remove.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_REMOVE) (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- 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 (XsTransactionEnd).
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Transaction The returned transaction.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_TRANSACTION_START)(
- IN XENBUS_PROTOCOL *This,
- OUT XENSTORE_TRANSACTION *Transaction
- );
-
-/**
- End a transaction.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @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.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_XS_TRANSACTION_END) (
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN BOOLEAN Abort
- );
-
-/**
- Set a new state for the frontend of the PV driver.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Transaction The transaction to end/commit.
- @param State The new state to apply.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_SET_STATE)(
- IN XENBUS_PROTOCOL *This,
- IN CONST XENSTORE_TRANSACTION *Transaction,
- IN XenBusState State
- );
-
-/**
- Grant access to the page Frame to the domain DomainId.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param DomainId ID of the domain to grant acces to.
- @param Frame Frame Number of the page to grant access to.
- @param ReadOnly Provide read-only or read-write access.
- @param RefPtr Reference number of the grant will be writen to this pointer.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *XENBUS_GRANT_ACCESS)(
- IN XENBUS_PROTOCOL *This,
- IN domid_t DomainId,
- IN UINTN Frame,
- IN BOOLEAN ReadOnly,
- OUT grant_ref_t *refp
- );
-
-/**
- End access to grant Ref, previously return by XenBusGrantAccess.
-
- @param This A pointer to XENBUS_PROTOCOL instance.
- @param Ref Reference numeber of a grant previously returned by
- XenBusGrantAccess.
-**/
-typedef
-EFI_STATUS
-(EFIAPI *XENBUS_GRANT_END_ACCESS)(
- IN XENBUS_PROTOCOL *This,
- IN grant_ref_t Ref
- );
-
-/**
- Allocate a port that can be bind from domain DomainId.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param DomainId The domain ID that can bind the newly allocated port.
- @param Port A pointer to a evtchn_port_t that will contain the newly
- allocated port.
-
- @retval UINT32 The return value from the hypercall, 0 if success.
-**/
-typedef
-UINT32
-(EFIAPI *XENBUS_EVENT_CHANNEL_ALLOCATE) (
- IN XENBUS_PROTOCOL *This,
- IN domid_t DomainId,
- OUT evtchn_port_t *Port
- );
-
-/**
- Send an event to the remote end of the channel whose local endpoint is Port.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Port Local port to the the event from.
-
- @retval UINT32 The return value from the hypercall, 0 if success.
-**/
-typedef
-UINT32
-(EFIAPI *XENBUS_EVENT_CHANNEL_NOTIFY) (
- IN XENBUS_PROTOCOL *This,
- IN evtchn_port_t Port
- );
-
-/**
- Close a local event channel Port.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Port The event channel to close.
-
- @retval UINT32 The return value from the hypercall, 0 if success.
-**/
-typedef
-UINT32
-(EFIAPI *XENBUS_EVENT_CHANNEL_CLOSE) (
- IN XENBUS_PROTOCOL *This,
- IN evtchn_port_t Port
- );
-
-/**
- Register a XenStore watch.
-
- XenStore watches allow a client to wait for changes to an object in the
- XenStore.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Node The basename of the path to watch.
- @param Token A token.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of write failure. EEXIST errors from the
- XenStore are supressed, allowing multiple, physically different,
- xenbus_watch objects, to watch the same path in the XenStore.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_REGISTER_WATCH) (
- IN XENBUS_PROTOCOL *This,
- IN CONST CHAR8 *Node,
- OUT VOID **Token
- );
-
-/**
- Register a XenStore watch on a backend's node.
-
- XenStore watches allow a client to wait for changes to an object in the
- XenStore.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Node The basename of the path to watch.
- @param Token A token.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of write failure. EEXIST errors from the
- XenStore are supressed, allowing multiple, physically different,
- xenbus_watch objects, to watch the same path in the XenStore.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_REGISTER_WATCH_BACKEND) (
- IN XENBUS_PROTOCOL *This,
- IN CONST CHAR8 *Node,
- OUT VOID **Token
- );
-
-/**
- Unregister a XenStore watch.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Token An token previously returned by a successful
- call to RegisterWatch ().
-**/
-typedef
-VOID
-(EFIAPI *XENBUS_UNREGISTER_WATCH) (
- IN XENBUS_PROTOCOL *This,
- IN VOID *Token
- );
-
-/**
- Block until the node watch by Token change.
-
- @param This A pointer to the XENBUS_PROTOCOL.
- @param Token An token previously returned by a successful
- call to RegisterWatch or RegisterWatchBackend.
-
- @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value
- indicating the type of failure.
-**/
-typedef
-XENSTORE_STATUS
-(EFIAPI *XENBUS_WAIT_FOR_WATCH) (
- IN XENBUS_PROTOCOL *This,
- IN VOID *Token
- );
-
-
-///
-/// Protocol structure
-///
-/// DISCLAIMER: the XENBUS_PROTOCOL introduced here is a work in progress, and
-/// should not be used outside of the EDK II tree.
-///
-struct _XENBUS_PROTOCOL {
- XENBUS_XS_READ XsRead;
- XENBUS_XS_BACKEND_READ XsBackendRead;
- XENBUS_XS_PRINTF XsPrintf;
- XENBUS_XS_REMOVE XsRemove;
- XENBUS_XS_TRANSACTION_START XsTransactionStart;
- XENBUS_XS_TRANSACTION_END XsTransactionEnd;
- XENBUS_SET_STATE SetState;
-
- XENBUS_GRANT_ACCESS GrantAccess;
- XENBUS_GRANT_END_ACCESS GrantEndAccess;
-
- XENBUS_EVENT_CHANNEL_ALLOCATE EventChannelAllocate;
- XENBUS_EVENT_CHANNEL_NOTIFY EventChannelNotify;
- XENBUS_EVENT_CHANNEL_CLOSE EventChannelClose;
-
- XENBUS_REGISTER_WATCH RegisterWatch;
- XENBUS_REGISTER_WATCH_BACKEND RegisterWatchBackend;
- XENBUS_UNREGISTER_WATCH UnregisterWatch;
- XENBUS_WAIT_FOR_WATCH WaitForWatch;
- //
- // Protocol data fields
- //
- CONST CHAR8 *Type;
- UINT16 DeviceId;
- CONST CHAR8 *Node;
- CONST CHAR8 *Backend;
-};
-
-extern EFI_GUID gXenBusProtocolGuid;
-
-#endif