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 };
27 
28 int osdep_xenforeignmemory_open(xenforeignmemory_handle *fmem);
29 int osdep_xenforeignmemory_close(xenforeignmemory_handle *fmem);
30 
31 void *osdep_xenforeignmemory_map(xenforeignmemory_handle *fmem,
32                                  uint32_t dom, void *addr,
33                                  int prot, int flags, size_t num,
34                                  const xen_pfn_t arr[num], int err[num]);
35 int osdep_xenforeignmemory_unmap(xenforeignmemory_handle *fmem,
36                                  void *addr, size_t num);
37 
38 int osdep_xenforeignmemory_restrict(xenforeignmemory_handle *fmem,
39                                     domid_t domid);
40 
41 #if defined(__NetBSD__) || defined(__sun__)
42 /* Strictly compat for those two only only */
43 void *compat_mapforeign_batch(xenforeignmem_handle *fmem, uint32_t dom,
44                               void *addr, int prot, int flags,
45                               xen_pfn_t *arr, int num);
46 #endif
47 
48 #define PERROR(_f...) \
49     xtl_log(fmem->logger, XTL_ERROR, errno, "xenforeignmemory", _f)
50 
51 #endif
52 
53 /*
54  * Local variables:
55  * mode: C
56  * c-file-style: "BSD"
57  * c-basic-offset: 4
58  * tab-width: 4
59  * indent-tabs-mode: nil
60  * End:
61  */
62