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
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
XENSTORE_STATUS\r
(EFIAPI *XENBUS_SET_STATE)(\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN XenBusState State\r
);\r
\r
EFIAPI\r
XenBusSetState (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN enum xenbus_state NewState\r
)\r
{\r
STATIC\r
XENSTORE_STATUS\r
XenStoreTalkv (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN enum xsd_sockmsg_type RequestType,\r
IN CONST WRITE_REQUEST *WriteRequest,\r
IN UINT32 NumRequests,\r
UINT32 Index;\r
XENSTORE_STATUS Status;\r
\r
- Message.tx_id = Transaction.Id;\r
+ if (Transaction == XST_NIL) {\r
+ Message.tx_id = 0;\r
+ } else {\r
+ Message.tx_id = Transaction->Id;\r
+ }\r
Message.req_id = 0;\r
Message.type = RequestType;\r
Message.len = 0;\r
STATIC\r
XENSTORE_STATUS\r
XenStoreSingle (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN enum xsd_sockmsg_type RequestType,\r
IN CONST CHAR8 *Body,\r
OUT UINT32 *LenPtr OPTIONAL,\r
\r
XENSTORE_STATUS\r
XenStoreListDirectory (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
OUT UINT32 *DirectoryCountPtr,\r
\r
BOOLEAN\r
XenStorePathExists (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Directory,\r
IN CONST CHAR8 *Node\r
)\r
\r
XENSTORE_STATUS\r
XenStoreRead (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
OUT UINT32 *LenPtr OPTIONAL,\r
\r
XENSTORE_STATUS\r
XenStoreWrite (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *Str\r
\r
XENSTORE_STATUS\r
XenStoreRemove (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node\r
)\r
\r
XENSTORE_STATUS\r
XenStoreTransactionEnd (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN BOOLEAN Abort\r
)\r
{\r
\r
XENSTORE_STATUS\r
XenStoreVSPrint (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
XENSTORE_STATUS\r
EFIAPI\r
XenStoreSPrint (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
EFIAPI\r
XenBusXenStoreRead (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Value\r
)\r
EFIAPI\r
XenBusXenStoreBackendRead (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Value\r
)\r
EFIAPI\r
XenBusXenStoreRemove (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN const char *Node\r
)\r
{\r
EFIAPI\r
XenBusXenStoreTransactionEnd (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN BOOLEAN Abort\r
)\r
{\r
EFIAPI\r
XenBusXenStoreSPrint (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
**/\r
XENSTORE_STATUS\r
XenStoreListDirectory (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
OUT UINT32 *DirectoryCountPtr,\r
**/\r
BOOLEAN\r
XenStorePathExists (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Directory,\r
IN CONST CHAR8 *Node\r
);\r
**/\r
XENSTORE_STATUS\r
XenStoreRead (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
OUT UINT32 *LenPtr OPTIONAL,\r
**/\r
XENSTORE_STATUS\r
XenStoreWrite (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *Str\r
**/\r
XENSTORE_STATUS\r
XenStoreRemove (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node\r
);\r
**/\r
XENSTORE_STATUS\r
XenStoreTransactionStart (\r
- OUT XENSTORE_TRANSACTION *Transaction\r
+ OUT XENSTORE_TRANSACTION *Transaction\r
);\r
\r
/**\r
**/\r
XENSTORE_STATUS\r
XenStoreTransactionEnd (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN BOOLEAN Abort\r
);\r
\r
XENSTORE_STATUS\r
EFIAPI\r
XenStoreSPrint (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
**/\r
XENSTORE_STATUS\r
XenStoreVSPrint (\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
EFIAPI\r
XenBusXenStoreRead (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Value\r
);\r
EFIAPI\r
XenBusXenStoreBackendRead (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node,\r
OUT VOID **Value\r
);\r
EFIAPI\r
XenBusXenStoreRemove (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *Node\r
);\r
\r
EFIAPI\r
XenBusXenStoreTransactionEnd (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN BOOLEAN Abort\r
);\r
\r
EFIAPI\r
XenBusXenStoreSPrint (\r
IN XENBUS_PROTOCOL *This,\r
- IN XENSTORE_TRANSACTION Transaction,\r
+ IN CONST XENSTORE_TRANSACTION *Transaction,\r
IN CONST CHAR8 *DirectoryPath,\r
IN CONST CHAR8 *Node,\r
IN CONST CHAR8 *FormatString,\r
OUT XEN_BLOCK_FRONT_DEVICE **DevPtr\r
)\r
{\r
- XENSTORE_TRANSACTION xbt;\r
+ XENSTORE_TRANSACTION Transaction;\r
CHAR8 *DeviceType;\r
blkif_sring_t *SharedRing;\r
XENSTORE_STATUS Status;\r
&Dev->RingRef);\r
\r
Again:\r
- Status = XenBusIo->XsTransactionStart (XenBusIo, &xbt);\r
+ Status = XenBusIo->XsTransactionStart (XenBusIo, &Transaction);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
DEBUG ((EFI_D_WARN, "XenPvBlk: Failed to start transaction, %d\n", Status));\r
goto Error;\r
}\r
\r
- Status = XenBusIo->XsPrintf (XenBusIo, xbt, NodeName, "ring-ref", "%d",\r
+ Status = XenBusIo->XsPrintf (XenBusIo, &Transaction, NodeName, "ring-ref", "%d",\r
Dev->RingRef);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
DEBUG ((EFI_D_ERROR, "XenPvBlk: Failed to write ring-ref.\n"));\r
goto AbortTransaction;\r
}\r
- Status = XenBusIo->XsPrintf (XenBusIo, xbt, NodeName,\r
+ Status = XenBusIo->XsPrintf (XenBusIo, &Transaction, NodeName,\r
"event-channel", "%d", Dev->EventChannel);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
DEBUG ((EFI_D_ERROR, "XenPvBlk: Failed to write event-channel.\n"));\r
goto AbortTransaction;\r
}\r
- Status = XenBusIo->XsPrintf (XenBusIo, xbt, NodeName,\r
+ Status = XenBusIo->XsPrintf (XenBusIo, &Transaction, NodeName,\r
"protocol", "%a", XEN_IO_PROTO_ABI_NATIVE);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
DEBUG ((EFI_D_ERROR, "XenPvBlk: Failed to write protocol.\n"));\r
goto AbortTransaction;\r
}\r
\r
- Status = XenBusIo->SetState (XenBusIo, xbt, XenbusStateConnected);\r
+ Status = XenBusIo->SetState (XenBusIo, &Transaction, XenbusStateConnected);\r
if (Status != XENSTORE_STATUS_SUCCESS) {\r
DEBUG ((EFI_D_ERROR, "XenPvBlk: Failed to switch state.\n"));\r
goto AbortTransaction;\r
}\r
\r
- Status = XenBusIo->XsTransactionEnd (XenBusIo, xbt, FALSE);\r
+ Status = XenBusIo->XsTransactionEnd (XenBusIo, &Transaction, FALSE);\r
if (Status == XENSTORE_STATUS_EAGAIN) {\r
goto Again;\r
}\r
XenBusIo->XsRemove (XenBusIo, XST_NIL, "protocol");\r
goto Error;\r
AbortTransaction:\r
- XenBusIo->XsTransactionEnd (XenBusIo, xbt, TRUE);\r
+ XenBusIo->XsTransactionEnd (XenBusIo, &Transaction, TRUE);\r
Error:\r
XenPvBlockFree (Dev);\r
return EFI_DEVICE_ERROR;\r