aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extras/mini-os/lib/sys.c13
-rw-r--r--tools/libxc/xc_minios.c32
2 files changed, 30 insertions, 15 deletions
diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c
index 42681742b8..b127996df5 100644
--- a/extras/mini-os/lib/sys.c
+++ b/extras/mini-os/lib/sys.c
@@ -83,10 +83,9 @@
}
#define NOFILE 32
-extern int xc_evtchn_close(int fd);
-struct xc_interface;
-extern int xc_interface_close_core(struct xc_interface*, int fd);
-extern int xc_gnttab_close(int fd);
+extern void minios_interface_close_fd(int fd);
+extern void minios_evtchn_close_fd(int fd);
+extern void minios_gnttab_close_fd(int fd);
pthread_mutex_t fd_lock = PTHREAD_MUTEX_INITIALIZER;
struct file files[NOFILE] = {
@@ -414,13 +413,13 @@ int close(int fd)
}
#endif
case FTYPE_XC:
- xc_interface_close_core(0,fd);
+ minios_interface_close_fd(fd);
return 0;
case FTYPE_EVTCHN:
- xc_evtchn_close(fd);
+ minios_evtchn_close_fd(fd);
return 0;
case FTYPE_GNTMAP:
- xc_gnttab_close(fd);
+ minios_gnttab_close_fd(fd);
return 0;
case FTYPE_TAP:
shutdown_netfront(files[fd].tap.dev);
diff --git a/tools/libxc/xc_minios.c b/tools/libxc/xc_minios.c
index 60f28d36fc..774e1debc6 100644
--- a/tools/libxc/xc_minios.c
+++ b/tools/libxc/xc_minios.c
@@ -40,6 +40,10 @@
#include "xc_private.h"
+void minios_interface_close_fd(int fd);
+void minios_evtchn_close_fd(int fd);
+void minios_gnttab_close_fd(int fd);
+
extern struct wait_queue_head event_queue;
int xc_interface_open_core(xc_interface *xch)
@@ -49,8 +53,12 @@ int xc_interface_open_core(xc_interface *xch)
int xc_interface_close_core(xc_interface *xch, int fd)
{
+ return close(fd);
+}
+
+void minios_interface_close_fd(int fd)
+{
files[fd].type = FTYPE_NONE;
- return 0;
}
void *xc_map_foreign_bulk(xc_interface *xch, uint32_t dom, int prot,
@@ -174,12 +182,16 @@ int xc_evtchn_open(void)
int xc_evtchn_close(int xce_handle)
{
+ return close(xce_handle);
+}
+
+void minios_evtchn_close_fd(int fd)
+{
int i;
for (i = 0; i < MAX_EVTCHN_PORTS; i++)
- if (files[xce_handle].evtchn.ports[i].bound)
- unbind_evtchn(files[xce_handle].evtchn.ports[i].port);
- files[xce_handle].type = FTYPE_NONE;
- return 0;
+ if (files[fd].evtchn.ports[i].bound)
+ unbind_evtchn(files[fd].evtchn.ports[i].port);
+ files[fd].type = FTYPE_NONE;
}
int xc_evtchn_fd(int xce_handle)
@@ -370,9 +382,13 @@ int xc_gnttab_open(xc_interface *xch)
int xc_gnttab_close(xc_interface *xch, int xcg_handle)
{
- gntmap_fini(&files[xcg_handle].gntmap);
- files[xcg_handle].type = FTYPE_NONE;
- return 0;
+ return close(xcg_handle);
+}
+
+void minios_gnttab_close_fd(int fd)
+{
+ gntmap_fini(&files[fd].gntmap);
+ files[fd].type = FTYPE_NONE;
}
void *xc_gnttab_map_grant_ref(xc_interface *xch, int xcg_handle,