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