[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 7/9] tools/libxenevtchn: add xenevtchn_bind() under Mini-OS
In order to reactivate an event channel after kexec() of Mini-OS, libxenevtchn needs to allocate the port data for the event channel and set the handler again. Add a new interface xenevtchn_bind() for that purpose, available under Mini-OS only. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> --- tools/include/xenevtchn.h | 11 +++++++++++ tools/libs/evtchn/minios.c | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/tools/include/xenevtchn.h b/tools/include/xenevtchn.h index 1255c85178..113a718d67 100644 --- a/tools/include/xenevtchn.h +++ b/tools/include/xenevtchn.h @@ -173,6 +173,17 @@ int xenevtchn_unmask(xenevtchn_handle *xce, evtchn_port_t port); */ int xenevtchn_restrict(xenevtchn_handle *xce, domid_t domid); +/** + * Bind an event channel under Mini-OS. + * + * Bind an event channel specified by its known port after a kexec() of + * Mini-OS. This function is available under Mini-OS only! + * + * @parm xce handle to the open evtchn interface + * @parm port the event channel to bind again + * @return 0 on success, -1 on failure with errno set appropriately. + */ +int xenevtchn_bind(xenevtchn_handle *xce, evtchn_port_t port); #endif /* diff --git a/tools/libs/evtchn/minios.c b/tools/libs/evtchn/minios.c index 0d2a201438..36e4201249 100644 --- a/tools/libs/evtchn/minios.c +++ b/tools/libs/evtchn/minios.c @@ -259,6 +259,23 @@ xenevtchn_port_or_error_t xenevtchn_bind_interdomain(xenevtchn_handle *xce, return local_port; } +int xenevtchn_bind(xenevtchn_handle *xce, evtchn_port_t port) +{ + struct port_info *port_info; + port_info = port_alloc(xce); + if ( port_info == NULL ) + return -1; + + printf("xenevtchn_bind(%"PRId32")\n", port); + bind_evtchn(port, evtchn_handler, xce); + + port_info->bound = true; + port_info->port = port; + unmask_evtchn(port); + + return 0; +} + int xenevtchn_unbind(xenevtchn_handle *xce, evtchn_port_t port) { int fd = xce->fd; -- 2.43.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |