- 论坛徽章:
- 0
|
330 void __free_pages_ok(struct page *page, unsigned int order)
331 {
332 LIST_HEAD(list);
333 int i;
334
335 arch_free_page(page, order);
336
337 mod_page_state(pgfree, 1 << order);
338
339 #ifndef CONFIG_MMU
340 if (order > 0)
341 for (i = 1 ; i < (1 << order) ; ++i)
342 __put_page(page + i);
343 #endif
344
345 for (i = 0 ; i < (1 << order) ; ++i)
346 free_pages_check(__FUNCTION__, page + i);
347 list_add(&page->lru, &list);
348 kernel_map_pages(page, 1<<order, 0);
349 free_pages_bulk(page_zone(page), 1, &list, order);
350 }
339~343行,释放内存块时如果内核定义了CONFIG_MMU选项,那么就需要将该内存块中除首页框之外所有其他页框的引用计数减1。为什么要这样做,这与CONFIG_MMU有什么关系?
|
|