--- lum-pristine/arch/um/kernel/mem.c Mon Aug 12 11:05:20 2002 +++ lum/arch/um/kernel/mem.c Thu Aug 1 18:07:35 2002 @@ -527,6 +527,22 @@ return(phys_mem_map(pte_val(pte))); } +struct page *check_get_page(unsigned long kaddr) +{ + struct page *page; + struct mem_region *mr; + unsigned long phys = __pa(kaddr); + unsigned int n = phys_region_index(phys); + + if(regions[n] == NULL) + return NULL; + + mr = regions[n]; + page = (struct page *) mr->mem_map; + return page + ((phys_addr(phys)) >> PAGE_SHIFT); +} + + struct mem_region *page_region(struct page *page, int *index_out) { int i; @@ -542,12 +558,14 @@ return(region); } } - panic("No region found for page"); +//panic("No region found for page"); return(NULL); } struct page *page_mem_map(struct page *page) { + if (!page_region(page, NULL)) + return NULL; return((struct page *) page_region(page, NULL)->mem_map); } @@ -564,7 +582,7 @@ (addr <= region->start + region->len)) return(mk_phys(addr - region->start, i)); } - panic("region_pa : no region for virtual address"); + //panic("region_pa : no region for virtual address"); return(0); }