UINT32 Id;\r
} XENSTORE_TRANSACTION;\r
\r
-#define XST_NIL ((XENSTORE_TRANSACTION) { 0 })\r
+#define XST_NIL ((XENSTORE_TRANSACTION *) NULL)\r
\r
typedef enum {\r
XENSTORE_STATUS_SUCCESS = 0,\r
\r
\r
#include <IndustryStandard/Xen/grant_table.h>\r
+#include <IndustryStandard/Xen/event_channel.h>\r
\r
///\r
/// Function prototypes\r
XENSTORE_STATUS\r
(EFIAPI *XENBUS_XS_READ)(\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Result\r
);\r
XENSTORE_STATUS\r
(EFIAPI *XENBUS_XS_BACKEND_READ)(\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Result\r
);\r
XENSTORE_STATUS\r
(EFIAPI *XENBUS_XS_PRINTF) (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Directory,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *Format,\r
XENSTORE_STATUS\r
(EFIAPI *XENBUS_XS_REMOVE) (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node\r
);\r
\r
XENSTORE_STATUS\r
(EFIAPI *XENBUS_XS_TRANSACTION_END) (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN BOOLEAN Abort\r
);\r
\r
+/**\r
+ Set a new state for the frontend of the PV driver.\r
+\r
+ @param This A pointer to XENBUS_PROTOCOL instance.\r
+ @param Transaction The transaction to end/commit.\r
+ @param State The new state to apply.\r
+\r
+ @return On success, XENSTORE_STATUS_SUCCESS. Otherwise an errno value\r
+ indicating the type of failure.\r
+**/\r
+typedef\r
+XENSTORE_STATUS\r
+(EFIAPI *XENBUS_SET_STATE)(\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
+ IN XenBusState State\r
+ );\r
+\r
/**\r
Grant access to the page Frame to the domain DomainId.\r
\r
IN grant_ref_t Ref\r
);\r
\r
+/**\r
+ Allocate a port that can be bind from domain DomainId.\r
+\r
+ @param This A pointer to the XENBUS_PROTOCOL.\r
+ @param DomainId The domain ID that can bind the newly allocated port.\r
+ @param Port A pointer to a evtchn_port_t that will contain the newly\r
+ allocated port.\r
+\r
+ @retval UINT32 The return value from the hypercall, 0 if success.\r
+**/\r
+typedef\r
+UINT32\r
+(EFIAPI *XENBUS_EVENT_CHANNEL_ALLOCATE) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN domid_t DomainId,\r
+ OUT evtchn_port_t *Port\r
+ );\r
+\r
+/**\r
+ Send an event to the remote end of the channel whose local endpoint is Port.\r
+\r
+ @param This A pointer to the XENBUS_PROTOCOL.\r
+ @param Port Local port to the the event from.\r
+\r
+ @retval UINT32 The return value from the hypercall, 0 if success.\r
+**/\r
+typedef\r
+UINT32\r
+(EFIAPI *XENBUS_EVENT_CHANNEL_NOTIFY) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN evtchn_port_t Port\r
+ );\r
+\r
+/**\r
+ Close a local event channel Port.\r
+\r
+ @param This A pointer to the XENBUS_PROTOCOL.\r
+ @param Port The event channel to close.\r
+\r
+ @retval UINT32 The return value from the hypercall, 0 if success.\r
+**/\r
+typedef\r
+UINT32\r
+(EFIAPI *XENBUS_EVENT_CHANNEL_CLOSE) (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN evtchn_port_t Port\r
+ );\r
+\r
/**\r
Register a XenStore watch.\r
\r
XENBUS_XS_REMOVE XsRemove;\r
XENBUS_XS_TRANSACTION_START XsTransactionStart;\r
XENBUS_XS_TRANSACTION_END XsTransactionEnd;\r
+ XENBUS_SET_STATE SetState;\r
\r
XENBUS_GRANT_ACCESS GrantAccess;\r
XENBUS_GRANT_END_ACCESS GrantEndAccess;\r
\r
+ XENBUS_EVENT_CHANNEL_ALLOCATE EventChannelAllocate;\r
+ XENBUS_EVENT_CHANNEL_NOTIFY EventChannelNotify;\r
+ XENBUS_EVENT_CHANNEL_CLOSE EventChannelClose;\r
+\r
XENBUS_REGISTER_WATCH RegisterWatch;\r
XENBUS_REGISTER_WATCH_BACKEND RegisterWatchBackend;\r
XENBUS_UNREGISTER_WATCH UnregisterWatch;\r