Home | History | Annotate | Download | only in rumpkern

Lines Matching defs:pgri

565 	struct pagerinfo *pgri;
570 pgri = kmem_alloc(sizeof(*pgri), KM_SLEEP);
571 pgri->pgr_kva = (vaddr_t)kmem_alloc(npages * PAGE_SIZE, KM_SLEEP);
572 pgri->pgr_npages = npages;
573 pgri->pgr_pgs = kmem_alloc(sizeof(struct vm_page *) * npages, KM_SLEEP);
574 pgri->pgr_read = (flags & UVMPAGER_MAPIN_READ) != 0;
577 for (i = 0, curkva = pgri->pgr_kva;
588 pgri->pgr_pgs[i] = pgs[i];
592 LIST_INSERT_HEAD(&pagerlist, pgri, pgr_entries);
595 return pgri->pgr_kva;
607 struct pagerinfo *pgri;
612 LIST_FOREACH(pgri, &pagerlist, pgr_entries) {
613 if (pgri->pgr_kva == kva)
616 KASSERT(pgri);
617 if (pgri->pgr_npages != npages)
619 LIST_REMOVE(pgri, pgr_entries);
622 if (pgri->pgr_read) {
623 for (i = 0, curkva = pgri->pgr_kva;
624 i < pgri->pgr_npages;
626 memcpy(pgri->pgr_pgs[i]->uanon,(void*)curkva,PAGE_SIZE);
630 kmem_free(pgri->pgr_pgs, npages * sizeof(struct vm_page *));
631 kmem_free((void*)pgri->pgr_kva, npages * PAGE_SIZE);
632 kmem_free(pgri, sizeof(*pgri));
642 struct pagerinfo *pgri;
647 LIST_FOREACH(pgri, &pagerlist, pgr_entries) {
648 if (pgri->pgr_kva <= va
649 pgri->pgr_kva + pgri->pgr_npages*PAGE_SIZE)
652 if (pgri) {
653 i = (va - pgri->pgr_kva) >> PAGE_SHIFT;
654 pg = pgri->pgr_pgs[i];