summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/XenBusDxe
diff options
context:
space:
mode:
authorAnthony PERARD <anthony.perard@citrix.com>2014-10-29 06:50:24 +0000
committerjljusten <jljusten@Edk2>2014-10-29 06:50:24 +0000
commitf1259bba3647beb30b7c5e2e7dbe6ba060814912 (patch)
tree78e297f0945f8f734a193aeb37661c0335bb9c8a /OvmfPkg/XenBusDxe
parent0fd142464fc5b0fcb8b7fdfac379c1054ec81654 (diff)
downloadedk2-f1259bba3647beb30b7c5e2e7dbe6ba060814912.tar.gz
edk2-f1259bba3647beb30b7c5e2e7dbe6ba060814912.tar.bz2
edk2-f1259bba3647beb30b7c5e2e7dbe6ba060814912.zip
OvmfPkg/XenBusDxe: Add Event Channel Notify.
This first function is used to notify the other side that there is something to do. The other side is another Xen domain. Change in V4: - Replace the license by the commonly used file header text. Change in V3: - Return error code from hypercall instead of ASSERT for XenEventChannelNotify - moving event_channel.h to this patch. Change in V2: - file header - coding style - adding comment to functions - Licenses License: This patch adds event_channel.h which is under MIT licence. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Acked-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16265 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'OvmfPkg/XenBusDxe')
-rw-r--r--OvmfPkg/XenBusDxe/EventChannel.c33
-rw-r--r--OvmfPkg/XenBusDxe/EventChannel.h36
-rw-r--r--OvmfPkg/XenBusDxe/XenBusDxe.inf2
3 files changed, 71 insertions, 0 deletions
diff --git a/OvmfPkg/XenBusDxe/EventChannel.c b/OvmfPkg/XenBusDxe/EventChannel.c
new file mode 100644
index 0000000000..c4076c49ea
--- /dev/null
+++ b/OvmfPkg/XenBusDxe/EventChannel.c
@@ -0,0 +1,33 @@
+/** @file
+ Event Channel function implementation.
+
+ Event channel are use to notify of an event that happend in a shared
+ structure for example.
+
+ 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.
+
+**/
+#include "EventChannel.h"
+#include "XenHypercall.h"
+
+UINT32
+XenEventChannelNotify (
+ IN XENBUS_DEVICE *Dev,
+ IN evtchn_port_t Port
+ )
+{
+ INTN ReturnCode;
+ evtchn_send_t Send;
+
+ Send.port = Port;
+ ReturnCode = XenHypercallEventChannelOp (Dev, EVTCHNOP_send, &Send);
+ return ReturnCode;
+}
diff --git a/OvmfPkg/XenBusDxe/EventChannel.h b/OvmfPkg/XenBusDxe/EventChannel.h
new file mode 100644
index 0000000000..5f3171d7ca
--- /dev/null
+++ b/OvmfPkg/XenBusDxe/EventChannel.h
@@ -0,0 +1,36 @@
+/** @file
+ Event Channel function declaration.
+
+ 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 __XENBUS_EVENT_CHANNEL_H
+#define __XENBUS_EVENT_CHANNEL_H
+
+#include "XenBusDxe.h"
+
+#include <IndustryStandard/Xen/event_channel.h>
+
+/**
+ Send an event to the remote end of the channel whose local endpoint is Port.
+
+ @param Dev A pointer to XENBUS_DEVICE.
+ @param Port The port to notify.
+
+ @return Return 0 on success, or return the errno code from the hypercall.
+**/
+UINT32
+XenEventChannelNotify (
+ IN XENBUS_DEVICE *Dev,
+ IN evtchn_port_t Port
+ );
+
+#endif
diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.inf b/OvmfPkg/XenBusDxe/XenBusDxe.inf
index 080e55a9bb..0af1946e26 100644
--- a/OvmfPkg/XenBusDxe/XenBusDxe.inf
+++ b/OvmfPkg/XenBusDxe/XenBusDxe.inf
@@ -40,6 +40,8 @@
InterlockedCompareExchange16.h
GrantTable.c
GrantTable.h
+ EventChannel.c
+ EventChannel.h
[Sources.IA32]
Ia32/hypercall.S