Messages in this thread | | | From | "User &" <> | Subject | New demand page function | Date | Mon, 10 Feb 2003 14:57:44 -0300 |
| |
Hi , i done one function for demand page. This do almost the same thing of the others functions , the diffence is in when do the page allocations. This still need some tests , but i´d like to know your opinions.
struct page *f_a_page(unsigned int gfp_mask,zone_t *zone,pte_t pte) { struct page *page; struct page *new; char *kaddr; int i,j; /* Teste if there are many pages to alloc and try to alloc just one page*/
reload: if((zone->free_pages >= zone->pages_min)) { page = alloc_page(gfp_mask,0); if(!page) return NOPAGE_OOM; /*Map alloced page*/ kaddr = (char *)kmap(page); if(!kaddr) return;
return page; } /*If there aren´t no much pages , try to free some pages*/
else { i = 0; do { i++; j = 2*2*i; }while((j > zone->pages_min)); new = pte_page(pte); if(new) { if(new->count !=0) spin_lock(&zone->lock); __free_pages(new,i); spin_unlock(&zone->lock); goto reload; } } thanks Breno ---------------------- WebMail Bandnet.com.br
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |