aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/events.c
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2013-03-21 16:11:22 -0400
committerIan Campbell <ian.campbell@citrix.com>2013-04-12 14:28:17 +0100
commit9f0cf56683a0efcaa3cda67c534144d335f7ad2c (patch)
tree85bc2bbcd3927f3410ed68f2adcdff5cb6b65e0f /extras/mini-os/events.c
parentb05cb51b0605fb7c614e8a78ef03b79eeb06c85a (diff)
downloadxen-9f0cf56683a0efcaa3cda67c534144d335f7ad2c.tar.gz
xen-9f0cf56683a0efcaa3cda67c534144d335f7ad2c.tar.bz2
xen-9f0cf56683a0efcaa3cda67c534144d335f7ad2c.zip
mini-os/tpmback: add tpmback_get_peercontext
This allows the XSM label of the TPM's client domain to be retrieved. Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov> Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'extras/mini-os/events.c')
-rw-r--r--extras/mini-os/events.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/extras/mini-os/events.c b/extras/mini-os/events.c
index 896c36565c..036b84b691 100644
--- a/extras/mini-os/events.c
+++ b/extras/mini-os/events.c
@@ -21,6 +21,7 @@
#include <mini-os/hypervisor.h>
#include <mini-os/events.h>
#include <mini-os/lib.h>
+#include <xen/xsm/flask_op.h>
#define NR_EVS 1024
@@ -258,6 +259,27 @@ int evtchn_bind_interdomain(domid_t pal, evtchn_port_t remote_port,
return rc;
}
+int evtchn_get_peercontext(evtchn_port_t local_port, char *ctx, int size)
+{
+ int rc;
+ uint32_t sid;
+ struct xen_flask_op op;
+ op.cmd = FLASK_GET_PEER_SID;
+ op.interface_version = XEN_FLASK_INTERFACE_VERSION;
+ op.u.peersid.evtchn = local_port;
+ rc = _hypercall1(int, xsm_op, &op);
+ if (rc)
+ return rc;
+ sid = op.u.peersid.sid;
+ op.cmd = FLASK_SID_TO_CONTEXT;
+ op.u.sid_context.sid = sid;
+ op.u.sid_context.size = size;
+ set_xen_guest_handle(op.u.sid_context.context, ctx);
+ rc = _hypercall1(int, xsm_op, &op);
+ return rc;
+}
+
+
/*
* Local variables:
* mode: C