\r
Send.port = Port;\r
ReturnCode = XenHypercallEventChannelOp (Dev, EVTCHNOP_send, &Send);\r
+ return (UINT32)ReturnCode;\r
+}\r
+\r
+UINT32\r
+EFIAPI\r
+XenBusEventChannelAllocate (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN domid_t DomainId,\r
+ OUT evtchn_port_t *Port\r
+ )\r
+{\r
+ XENBUS_PRIVATE_DATA *Private;\r
+ evtchn_alloc_unbound_t Parameter;\r
+ UINT32 ReturnCode;\r
+\r
+ Private = XENBUS_PRIVATE_DATA_FROM_THIS (This);\r
+\r
+ Parameter.dom = DOMID_SELF;\r
+ Parameter.remote_dom = DomainId;\r
+ ReturnCode = (UINT32)XenHypercallEventChannelOp (Private->Dev,\r
+ EVTCHNOP_alloc_unbound,\r
+ &Parameter);\r
+ if (ReturnCode != 0) {\r
+ DEBUG ((EFI_D_ERROR, "ERROR: alloc_unbound failed with rc=%d", ReturnCode));\r
+ return ReturnCode;\r
+ }\r
+ *Port = Parameter.port;\r
return ReturnCode;\r
}\r
+\r
+UINT32\r
+EFIAPI\r
+XenBusEventChannelNotify (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN evtchn_port_t Port\r
+ )\r
+{\r
+ XENBUS_PRIVATE_DATA *Private;\r
+\r
+ Private = XENBUS_PRIVATE_DATA_FROM_THIS(This);\r
+ return XenEventChannelNotify (Private->Dev, Port);\r
+}\r
+\r
+UINT32\r
+EFIAPI\r
+XenBusEventChannelClose (\r
+ IN XENBUS_PROTOCOL *This,\r
+ IN evtchn_port_t Port\r
+ )\r
+{\r
+ XENBUS_PRIVATE_DATA *Private;\r
+ evtchn_close_t Close;\r
+\r
+ Private = XENBUS_PRIVATE_DATA_FROM_THIS (This);\r
+ Close.port = Port;\r
+ return (UINT32)XenHypercallEventChannelOp (Private->Dev, EVTCHNOP_close, &Close);\r
+}\r