diff options
Diffstat (limited to 'include/xen')
| -rw-r--r-- | include/xen/Kbuild | 1 | ||||
| -rw-r--r-- | include/xen/interface/memory.h | 29 | ||||
| -rw-r--r-- | include/xen/privcmd.h | 80 | ||||
| -rw-r--r-- | include/xen/xen-ops.h | 5 |
4 files changed, 115 insertions, 0 deletions
diff --git a/include/xen/Kbuild b/include/xen/Kbuild index 4e65c16a445b..84ad8f02fee5 100644 --- a/include/xen/Kbuild +++ b/include/xen/Kbuild | |||
| @@ -1 +1,2 @@ | |||
| 1 | header-y += evtchn.h | 1 | header-y += evtchn.h |
| 2 | header-y += privcmd.h | ||
diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h index d3938d3e71f8..d7a6c13bde69 100644 --- a/include/xen/interface/memory.h +++ b/include/xen/interface/memory.h | |||
| @@ -186,6 +186,35 @@ struct xen_translate_gpfn_list { | |||
| 186 | }; | 186 | }; |
| 187 | DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list); | 187 | DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list); |
| 188 | 188 | ||
| 189 | /* | ||
| 190 | * Returns the pseudo-physical memory map as it was when the domain | ||
| 191 | * was started (specified by XENMEM_set_memory_map). | ||
| 192 | * arg == addr of struct xen_memory_map. | ||
| 193 | */ | ||
| 194 | #define XENMEM_memory_map 9 | ||
| 195 | struct xen_memory_map { | ||
| 196 | /* | ||
| 197 | * On call the number of entries which can be stored in buffer. On | ||
| 198 | * return the number of entries which have been stored in | ||
| 199 | * buffer. | ||
| 200 | */ | ||
| 201 | unsigned int nr_entries; | ||
| 202 | |||
| 203 | /* | ||
| 204 | * Entries in the buffer are in the same format as returned by the | ||
| 205 | * BIOS INT 0x15 EAX=0xE820 call. | ||
| 206 | */ | ||
| 207 | GUEST_HANDLE(void) buffer; | ||
| 208 | }; | ||
| 209 | DEFINE_GUEST_HANDLE_STRUCT(xen_memory_map); | ||
| 210 | |||
| 211 | /* | ||
| 212 | * Returns the real physical memory map. Passes the same structure as | ||
| 213 | * XENMEM_memory_map. | ||
| 214 | * arg == addr of struct xen_memory_map. | ||
| 215 | */ | ||
| 216 | #define XENMEM_machine_memory_map 10 | ||
| 217 | |||
| 189 | 218 | ||
| 190 | /* | 219 | /* |
| 191 | * Prevent the balloon driver from changing the memory reservation | 220 | * Prevent the balloon driver from changing the memory reservation |
diff --git a/include/xen/privcmd.h b/include/xen/privcmd.h new file mode 100644 index 000000000000..b42cdfd92fee --- /dev/null +++ b/include/xen/privcmd.h | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | /****************************************************************************** | ||
| 2 | * privcmd.h | ||
| 3 | * | ||
| 4 | * Interface to /proc/xen/privcmd. | ||
| 5 | * | ||
| 6 | * Copyright (c) 2003-2005, K A Fraser | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU General Public License version 2 | ||
| 10 | * as published by the Free Software Foundation; or, when distributed | ||
| 11 | * separately from the Linux kernel or incorporated into other | ||
| 12 | * software packages, subject to the following license: | ||
| 13 | * | ||
| 14 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 15 | * of this source file (the "Software"), to deal in the Software without | ||
| 16 | * restriction, including without limitation the rights to use, copy, modify, | ||
| 17 | * merge, publish, distribute, sublicense, and/or sell copies of the Software, | ||
| 18 | * and to permit persons to whom the Software is furnished to do so, subject to | ||
| 19 | * the following conditions: | ||
| 20 | * | ||
| 21 | * The above copyright notice and this permission notice shall be included in | ||
| 22 | * all copies or substantial portions of the Software. | ||
| 23 | * | ||
| 24 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 25 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 26 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 27 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 28 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| 29 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
| 30 | * IN THE SOFTWARE. | ||
| 31 | */ | ||
| 32 | |||
| 33 | #ifndef __LINUX_PUBLIC_PRIVCMD_H__ | ||
| 34 | #define __LINUX_PUBLIC_PRIVCMD_H__ | ||
| 35 | |||
| 36 | #include <linux/types.h> | ||
| 37 | |||
| 38 | typedef unsigned long xen_pfn_t; | ||
| 39 | |||
| 40 | #ifndef __user | ||
| 41 | #define __user | ||
| 42 | #endif | ||
| 43 | |||
| 44 | struct privcmd_hypercall { | ||
| 45 | __u64 op; | ||
| 46 | __u64 arg[5]; | ||
| 47 | }; | ||
| 48 | |||
| 49 | struct privcmd_mmap_entry { | ||
| 50 | __u64 va; | ||
| 51 | __u64 mfn; | ||
| 52 | __u64 npages; | ||
| 53 | }; | ||
| 54 | |||
| 55 | struct privcmd_mmap { | ||
| 56 | int num; | ||
| 57 | domid_t dom; /* target domain */ | ||
| 58 | struct privcmd_mmap_entry __user *entry; | ||
| 59 | }; | ||
| 60 | |||
| 61 | struct privcmd_mmapbatch { | ||
| 62 | int num; /* number of pages to populate */ | ||
| 63 | domid_t dom; /* target domain */ | ||
| 64 | __u64 addr; /* virtual address */ | ||
| 65 | xen_pfn_t __user *arr; /* array of mfns - top nibble set on err */ | ||
| 66 | }; | ||
| 67 | |||
| 68 | /* | ||
| 69 | * @cmd: IOCTL_PRIVCMD_HYPERCALL | ||
| 70 | * @arg: &privcmd_hypercall_t | ||
| 71 | * Return: Value returned from execution of the specified hypercall. | ||
| 72 | */ | ||
| 73 | #define IOCTL_PRIVCMD_HYPERCALL \ | ||
| 74 | _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall)) | ||
| 75 | #define IOCTL_PRIVCMD_MMAP \ | ||
| 76 | _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap)) | ||
| 77 | #define IOCTL_PRIVCMD_MMAPBATCH \ | ||
| 78 | _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch)) | ||
| 79 | |||
| 80 | #endif /* __LINUX_PUBLIC_PRIVCMD_H__ */ | ||
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h index 351f4051f6d8..98b92154a264 100644 --- a/include/xen/xen-ops.h +++ b/include/xen/xen-ops.h | |||
| @@ -23,4 +23,9 @@ int xen_create_contiguous_region(unsigned long vstart, unsigned int order, | |||
| 23 | 23 | ||
| 24 | void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order); | 24 | void xen_destroy_contiguous_region(unsigned long vstart, unsigned int order); |
| 25 | 25 | ||
| 26 | int xen_remap_domain_mfn_range(struct vm_area_struct *vma, | ||
| 27 | unsigned long addr, | ||
| 28 | unsigned long mfn, int nr, | ||
| 29 | pgprot_t prot, unsigned domid); | ||
| 30 | |||
| 26 | #endif /* INCLUDE_XEN_OPS_H */ | 31 | #endif /* INCLUDE_XEN_OPS_H */ |
