mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xentoolcore_restrict_all: "Implement" for xengnttab
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com> Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
1 parent
83b191eaa1
commit
c688dceca5
5 files changed
+16
-4
No files matched your search
+1
-1
@@ -114,7 +114,7 @@ LDLIBS_libxenevtchn = $(SHDEPS_libxenevtchn) $(XEN_LIBXENEVTCHN)/libxenevtchn$(l
|
||||
SHLIB_libxenevtchn = $(SHDEPS_libxenevtchn) -Wl,-rpath-link=$(XEN_LIBXENEVTCHN)
|
||||
|
||||
CFLAGS_libxengnttab = -I$(XEN_LIBXENGNTTAB)/include $(CFLAGS_xeninclude)
|
||||
SHDEPS_libxengnttab = $(SHLIB_libxentoollog)
|
||||
SHDEPS_libxengnttab = $(SHLIB_libxentoollog) $(SHLIB_libxentoolcore)
|
||||
LDLIBS_libxengnttab = $(SHDEPS_libxengnttab) $(XEN_LIBXENGNTTAB)/libxengnttab$(libextension)
|
||||
SHLIB_libxengnttab = $(SHDEPS_libxengnttab) -Wl,-rpath-link=$(XEN_LIBXENGNTTAB)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ SHLIB_LDFLAGS += -Wl,--version-script=libxengnttab.map
|
||||
|
||||
CFLAGS += -Werror -Wmissing-prototypes
|
||||
CFLAGS += -I./include $(CFLAGS_xeninclude)
|
||||
CFLAGS += $(CFLAGS_libxentoollog)
|
||||
CFLAGS += $(CFLAGS_libxentoollog) $(CFLAGS_libxentoolcore)
|
||||
|
||||
SRCS-GNTTAB += gnttab_core.c
|
||||
SRCS-GNTSHR += gntshr_core.c
|
||||
@@ -64,7 +64,7 @@ libxengnttab.so.$(MAJOR): libxengnttab.so.$(MAJOR).$(MINOR)
|
||||
$(SYMLINK_SHLIB) $< $@
|
||||
|
||||
libxengnttab.so.$(MAJOR).$(MINOR): $(PIC_OBJS) libxengnttab.map
|
||||
$(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxengnttab.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(APPEND_LDFLAGS)
|
||||
$(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxengnttab.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(LDLIBS_libxentoolcore) $(APPEND_LDFLAGS)
|
||||
|
||||
.PHONY: install
|
||||
install: build
|
||||
|
||||
@@ -22,6 +22,11 @@
|
||||
|
||||
#include "private.h"
|
||||
|
||||
static int all_restrict_cb(Xentoolcore__Active_Handle *ah, uint32_t domid) {
|
||||
xengnttab_handle *xgt = CONTAINER_OF(ah, *xgt, tc_ah);
|
||||
return xentoolcore__restrict_by_dup2_null(xgt->fd);
|
||||
}
|
||||
|
||||
xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags)
|
||||
{
|
||||
xengnttab_handle *xgt = malloc(sizeof(*xgt));
|
||||
@@ -33,6 +38,9 @@ xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags)
|
||||
xgt->logger = logger;
|
||||
xgt->logger_tofree = NULL;
|
||||
|
||||
xgt->tc_ah.restrict_callback = all_restrict_cb;
|
||||
xentoolcore__register_active_handle(&xgt->tc_ah);
|
||||
|
||||
if (!xgt->logger) {
|
||||
xgt->logger = xgt->logger_tofree =
|
||||
(xentoollog_logger*)
|
||||
@@ -47,6 +55,7 @@ xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags)
|
||||
|
||||
err:
|
||||
osdep_gnttab_close(xgt);
|
||||
xentoolcore__deregister_active_handle(&xgt->tc_ah);
|
||||
xtl_logger_destroy(xgt->logger_tofree);
|
||||
free(xgt);
|
||||
return NULL;
|
||||
@@ -60,6 +69,7 @@ int xengnttab_close(xengnttab_handle *xgt)
|
||||
return 0;
|
||||
|
||||
rc = osdep_gnttab_close(xgt);
|
||||
xentoolcore__deregister_active_handle(&xgt->tc_ah);
|
||||
xtl_logger_destroy(xgt->logger_tofree);
|
||||
free(xgt);
|
||||
return rc;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define XENGNTTAB_PRIVATE_H
|
||||
|
||||
#include <xentoollog.h>
|
||||
#include <xentoolcore_internal.h>
|
||||
#include <xengnttab.h>
|
||||
|
||||
/* Set of macros/defines used by both Linux and FreeBSD */
|
||||
@@ -13,6 +14,7 @@
|
||||
struct xengntdev_handle {
|
||||
xentoollog_logger *logger, *logger_tofree;
|
||||
int fd;
|
||||
Xentoolcore__Active_Handle tc_ah;
|
||||
};
|
||||
|
||||
int osdep_gnttab_open(xengnttab_handle *xgt);
|
||||
|
||||
@@ -7,4 +7,4 @@ Description: The Xengnttab library for Xen hypervisor
|
||||
Version: @@version@@
|
||||
Cflags: -I${includedir} @@cflagslocal@@
|
||||
Libs: @@libsflag@@${libdir} -lxengnttab
|
||||
Requires.private: xentoollog
|
||||
Requires.private: xentoollog,xentoolcore
|
||||