mm_inline.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. static inline void
  2. add_page_to_active_list(struct zone *zone, struct page *page)
  3. {
  4. list_add(&page->lru, &zone->active_list);
  5. zone->nr_active++;
  6. }
  7. static inline void
  8. add_page_to_inactive_list(struct zone *zone, struct page *page)
  9. {
  10. list_add(&page->lru, &zone->inactive_list);
  11. zone->nr_inactive++;
  12. }
  13. static inline void
  14. del_page_from_active_list(struct zone *zone, struct page *page)
  15. {
  16. list_del(&page->lru);
  17. zone->nr_active--;
  18. }
  19. static inline void
  20. del_page_from_inactive_list(struct zone *zone, struct page *page)
  21. {
  22. list_del(&page->lru);
  23. zone->nr_inactive--;
  24. }
  25. static inline void
  26. del_page_from_lru(struct zone *zone, struct page *page)
  27. {
  28. list_del(&page->lru);
  29. if (PageActive(page)) {
  30. ClearPageActive(page);
  31. zone->nr_active--;
  32. } else {
  33. zone->nr_inactive--;
  34. }
  35. }
  36. /*
  37. * Isolate one page from the LRU lists.
  38. *
  39. * - zone->lru_lock must be held
  40. */
  41. static inline int __isolate_lru_page(struct page *page)
  42. {
  43. if (unlikely(!TestClearPageLRU(page)))
  44. return 0;
  45. if (get_page_testone(page)) {
  46. /*
  47. * It is being freed elsewhere
  48. */
  49. __put_page(page);
  50. SetPageLRU(page);
  51. return -ENOENT;
  52. }
  53. return 1;
  54. }