1 #ifndef XENFOREIGNMEMORY_PRIVATE_H
2 #define XENFOREIGNMEMORY_PRIVATE_H
3
4 #include <xenctrl.h>
5 #include <xentoollog.h>
6
7 #include <xenforeignmemory.h>
8
9 #include <xentoolcore_internal.h>
10
11 #include <xen/xen.h>
12 #include <xen/sys/privcmd.h>
13
14 struct xenforeignmemory_handle {
15 xentoollog_logger *logger, *logger_tofree;
16 unsigned flags;
17 int fd;
18 Xentoolcore__Active_Handle tc_ah;
19 int unimpl_errno;
20 };
21
22 int osdep_xenforeignmemory_open(xenforeignmemory_handle *fmem);
23 int osdep_xenforeignmemory_close(xenforeignmemory_handle *fmem);
24
25 void *osdep_xenforeignmemory_map(xenforeignmemory_handle *fmem,
26 uint32_t dom, void *addr,
27 int prot, int flags, size_t num,
28 const xen_pfn_t arr[/*num*/], int err[/*num*/]);
29 int osdep_xenforeignmemory_unmap(xenforeignmemory_handle *fmem,
30 void *addr, size_t num);
31
32 #if defined(__sun__)
33 /* Strictly compat for those two only only */
34 void *osdep_map_foreign_batch(xenforeignmemory_handle *fmem, uint32_t dom,
35 void *addr, int prot, int flags,
36 xen_pfn_t *arr, int num);
37 #endif
38
39 struct xenforeignmemory_resource_handle {
40 domid_t domid;
41 unsigned int type;
42 unsigned int id;
43 unsigned long frame;
44 unsigned long nr_frames;
45 void *addr;
46 int prot;
47 int flags;
48 };
49
50 #if defined(__sun__) || defined(__MINIOS__)
osdep_xenforeignmemory_restrict(xenforeignmemory_handle * fmem,domid_t domid)51 static inline int osdep_xenforeignmemory_restrict(xenforeignmemory_handle *fmem,
52 domid_t domid)
53 {
54 errno = EOPNOTSUPP;
55 return -1;
56 }
57
osdep_xenforeignmemory_map_resource(xenforeignmemory_handle * fmem,xenforeignmemory_resource_handle * fres)58 static inline int osdep_xenforeignmemory_map_resource(
59 xenforeignmemory_handle *fmem, xenforeignmemory_resource_handle *fres)
60 {
61 errno = EOPNOTSUPP;
62 return -1;
63 }
64
osdep_xenforeignmemory_unmap_resource(xenforeignmemory_handle * fmem,xenforeignmemory_resource_handle * fres)65 static inline int osdep_xenforeignmemory_unmap_resource(
66 xenforeignmemory_handle *fmem, xenforeignmemory_resource_handle *fres)
67 {
68 return 0;
69 }
70 #else
71 int osdep_xenforeignmemory_restrict(xenforeignmemory_handle *fmem,
72 domid_t domid);
73 int osdep_xenforeignmemory_map_resource(
74 xenforeignmemory_handle *fmem, xenforeignmemory_resource_handle *fres);
75 int osdep_xenforeignmemory_unmap_resource(
76 xenforeignmemory_handle *fmem, xenforeignmemory_resource_handle *fres);
77 #endif
78
79 #define PERROR(_f...) \
80 xtl_log(fmem->logger, XTL_ERROR, errno, "xenforeignmemory", _f)
81
82 #endif
83
84 /*
85 * Local variables:
86 * mode: C
87 * c-file-style: "BSD"
88 * c-basic-offset: 4
89 * tab-width: 4
90 * indent-tabs-mode: nil
91 * End:
92 */
93