mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
pv-grub: re-implement xc_map_foreign_ranges
Also get rid of va and npages members of privcmd_mmap_entry since we do not need them any more. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
This commit is contained in:
1 parent
0905190686
commit
fd6a37dbdc
2 files changed
+19
-18
No files matched your search
@@ -10,9 +10,7 @@ typedef struct privcmd_hypercall
|
||||
} privcmd_hypercall_t;
|
||||
|
||||
typedef struct privcmd_mmap_entry {
|
||||
u64 va;
|
||||
u64 mfn;
|
||||
u64 npages;
|
||||
} privcmd_mmap_entry_t;
|
||||
|
||||
#endif /* __MINIOS_PUBLIC_PRIVCMD_H__ */
|
||||
+19
-16
@@ -80,24 +80,27 @@ void *xc_map_foreign_ranges(int xc_handle, uint32_t dom,
|
||||
size_t size, int prot, size_t chunksize,
|
||||
privcmd_mmap_entry_t entries[], int nentries)
|
||||
{
|
||||
ERROR("%s: implement me\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
int xc_map_foreign_ranges(int xc_handle, uint32_t dom,
|
||||
privcmd_mmap_entry_t *entries, int nr)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < nr; i++) {
|
||||
unsigned long mfn = entries[i].mfn;
|
||||
do_map_frames(entries[i].va, &mfn, entries[i].npages, 0, 1, dom, 0, L1_PROT);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
unsigned long mfns[size / PAGE_SIZE];
|
||||
int i, j, n;
|
||||
unsigned long pt_prot = 0;
|
||||
#ifdef __ia64__
|
||||
/* TODO */
|
||||
#else
|
||||
if (prot & PROT_READ)
|
||||
pt_prot = L1_PROT_RO;
|
||||
if (prot & PROT_WRITE)
|
||||
pt_prot = L1_PROT;
|
||||
#endif
|
||||
|
||||
n = 0;
|
||||
for (i = 0; i < nentries; i++)
|
||||
for (j = 0; j < chunksize / PAGE_SIZE; j++)
|
||||
mfns[n++] = entries[i].mfn + j;
|
||||
|
||||
return map_frames_ex(mfns, n, 1, 0, 1, dom, 0, pt_prot);
|
||||
}
|
||||
|
||||
|
||||
int do_xen_hypercall(int xc_handle, privcmd_hypercall_t *hypercall)
|
||||
{
|
||||
multicall_entry_t call;
|
||||
|
||||