mm_inline.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. static inline void
  2. add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l)
  3. {
  4. list_add(&page->lru, &zone->lru[l].list);
  5. __inc_zone_state(zone, NR_LRU_BASE + l);
  6. }
  7. static inline void
  8. del_page_from_lru_list(struct zone *zone, struct page *page, enum lru_list l)
  9. {
  10. list_del(&page->lru);
  11. __dec_zone_state(zone, NR_LRU_BASE + l);
  12. }
  13. static inline void
  14. add_page_to_active_list(struct zone *zone, struct page *page)
  15. {
  16. add_page_to_lru_list(zone, page, LRU_ACTIVE);
  17. }
  18. static inline void
  19. add_page_to_inactive_list(struct zone *zone, struct page *page)
  20. {
  21. add_page_to_lru_list(zone, page, LRU_INACTIVE);
  22. }
  23. static inline void
  24. del_page_from_active_list(struct zone *zone, struct page *page)
  25. {
  26. del_page_from_lru_list(zone, page, LRU_ACTIVE);
  27. }
  28. static inline void
  29. del_page_from_inactive_list(struct zone *zone, struct page *page)
  30. {
  31. del_page_from_lru_list(zone, page, LRU_INACTIVE);
  32. }
  33. static inline void
  34. del_page_from_lru(struct zone *zone, struct page *page)
  35. {
  36. enum lru_list l = LRU_INACTIVE;
  37. list_del(&page->lru);
  38. if (PageActive(page)) {
  39. __ClearPageActive(page);
  40. l = LRU_ACTIVE;
  41. }
  42. __dec_zone_state(zone, NR_LRU_BASE + l);
  43. }
  44. /**
  45. * page_lru - which LRU list should a page be on?
  46. * @page: the page to test
  47. *
  48. * Returns the LRU list a page should be on, as an index
  49. * into the array of LRU lists.
  50. */
  51. static inline enum lru_list page_lru(struct page *page)
  52. {
  53. enum lru_list lru = LRU_BASE;
  54. if (PageActive(page))
  55. lru += LRU_ACTIVE;
  56. return lru;
  57. }