On 07/06/2010 01:48 PM, Xiao Guangrong wrote:
This function not only return the gfn's page but also the page number
after @gfn in the slot


@@ -923,15 +923,25 @@ static unsigned long gfn_to_hva_memslot(struct 
kvm_memory_slot *slot, gfn_t gfn)
        return slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE;
  }

-unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn)
+static unsigned long gfn_to_hva_many(struct kvm *kvm, gfn_t gfn, int *entry)
  {

'entry' better be gfn_t. We limit gfns in a slot, but that's artificial, let's use the correct type.

Also suggest nr_pages as the name.

@@ -1011,6 +1021,23 @@ pfn_t gfn_to_pfn_memslot(struct kvm *kvm,
        return hva_to_pfn(kvm, addr, false);
  }

+int gfn_to_page_many_atomic(struct kvm *kvm, gfn_t gfn,
+                           struct page **pages, int nr_pages, bool *enough)
+{
+       unsigned long addr;
+       int entry, ret;
+
+       addr = gfn_to_hva_many(kvm, gfn,&entry);
+       if (kvm_is_error_hva(addr))
+               return -1;
+
+       entry = min(entry, nr_pages);
+       *enough = (entry == nr_pages) ? true : false;

s/ ? true : false//; :)

Why not return 0 if !enough?

+       ret = __get_user_pages_fast(addr, entry, 1, pages);
+       return ret;
+}
+EXPORT_SYMBOL_GPL(gfn_to_page_many_atomic);
+
  struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn)
  {
        pfn_t pfn;


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to