本文共 945 字,大约阅读时间需要 3 分钟。
isolate_lru_page
int isolate_lru_page(struct page *page)
{ int ret = -EBUSY; VM_BUG_ON_PAGE(!page_count(page), page); WARN_RATELIMIT(PageTail(page), "trying to isolate tail page"); if (PageLRU(page)) { struct zone *zone = page_zone(page); struct lruvec *lruvec; spin_lock_irq(&zone->lru_lock); lruvec = mem_cgroup_page_lruvec(page, zone); if (PageLRU(page)) { int lru = page_lru(page); get_page(page); ClearPageLRU(page); del_page_from_lru_list(page, lruvec, lru); ret = 0; } spin_unlock_irq(&zone->lru_lock); } return ret; }static __always_inline void del_page_from_lru_list(struct page *page, struct lruvec *lruvec, enum lru_list lru)
{ list_del(&page->lru); update_lru_size(lruvec, lru, -hpage_nr_pages(page)); }static __always_inline void update_lru_size(struct lruvec *lruvec,enum lru_list lru, int nr_pages)
{ #ifdef CONFIG_MEMCG mem_cgroup_update_lru_size(lruvec, lru, nr_pages); #else __update_lru_size(lruvec, lru, nr_pages); #endif }转载地址:http://pxqti.baihongyu.com/