Lines Matching refs:mm_slot

102 struct mm_slot {  struct
119 struct mm_slot *mm_slot; member
197 static struct mm_slot ksm_mm_head = {
201 .mm_slot = &ksm_mm_head,
260 mm_slot_cache = KSM_KMEM_CACHE(mm_slot, 0); in ksm_slab_init()
309 static inline struct mm_slot *alloc_mm_slot(void) in alloc_mm_slot()
316 static inline void free_mm_slot(struct mm_slot *mm_slot) in free_mm_slot() argument
318 kmem_cache_free(mm_slot_cache, mm_slot); in free_mm_slot()
321 static struct mm_slot *get_mm_slot(struct mm_struct *mm) in get_mm_slot()
323 struct mm_slot *slot; in get_mm_slot()
333 struct mm_slot *mm_slot) in insert_to_mm_slots_hash() argument
335 mm_slot->mm = mm; in insert_to_mm_slots_hash()
336 hash_add(mm_slots_hash, &mm_slot->link, (unsigned long)mm); in insert_to_mm_slots_hash()
657 static void remove_trailing_rmap_items(struct mm_slot *mm_slot, in remove_trailing_rmap_items() argument
769 struct mm_slot *mm_slot; in unmerge_and_remove_all_rmap_items() local
775 ksm_scan.mm_slot = list_entry(ksm_mm_head.mm_list.next, in unmerge_and_remove_all_rmap_items()
776 struct mm_slot, mm_list); in unmerge_and_remove_all_rmap_items()
779 for (mm_slot = ksm_scan.mm_slot; in unmerge_and_remove_all_rmap_items()
780 mm_slot != &ksm_mm_head; mm_slot = ksm_scan.mm_slot) { in unmerge_and_remove_all_rmap_items()
781 mm = mm_slot->mm; in unmerge_and_remove_all_rmap_items()
794 remove_trailing_rmap_items(mm_slot, &mm_slot->rmap_list); in unmerge_and_remove_all_rmap_items()
797 ksm_scan.mm_slot = list_entry(mm_slot->mm_list.next, in unmerge_and_remove_all_rmap_items()
798 struct mm_slot, mm_list); in unmerge_and_remove_all_rmap_items()
800 hash_del(&mm_slot->link); in unmerge_and_remove_all_rmap_items()
801 list_del(&mm_slot->mm_list); in unmerge_and_remove_all_rmap_items()
804 free_mm_slot(mm_slot); in unmerge_and_remove_all_rmap_items()
822 ksm_scan.mm_slot = &ksm_mm_head; in unmerge_and_remove_all_rmap_items()
1507 static struct rmap_item *get_next_rmap_item(struct mm_slot *mm_slot, in get_next_rmap_item() argument
1527 rmap_item->mm = mm_slot->mm; in get_next_rmap_item()
1538 struct mm_slot *slot; in scan_get_next_rmap_item()
1546 slot = ksm_scan.mm_slot; in scan_get_next_rmap_item()
1585 slot = list_entry(slot->mm_list.next, struct mm_slot, mm_list); in scan_get_next_rmap_item()
1586 ksm_scan.mm_slot = slot; in scan_get_next_rmap_item()
1655 ksm_scan.mm_slot = list_entry(slot->mm_list.next, in scan_get_next_rmap_item()
1656 struct mm_slot, mm_list); in scan_get_next_rmap_item()
1681 slot = ksm_scan.mm_slot; in scan_get_next_rmap_item()
1787 struct mm_slot *mm_slot; in __ksm_enter() local
1790 mm_slot = alloc_mm_slot(); in __ksm_enter()
1791 if (!mm_slot) in __ksm_enter()
1798 insert_to_mm_slots_hash(mm, mm_slot); in __ksm_enter()
1810 list_add_tail(&mm_slot->mm_list, &ksm_mm_head.mm_list); in __ksm_enter()
1812 list_add_tail(&mm_slot->mm_list, &ksm_scan.mm_slot->mm_list); in __ksm_enter()
1826 struct mm_slot *mm_slot; in __ksm_exit() local
1839 mm_slot = get_mm_slot(mm); in __ksm_exit()
1840 if (mm_slot && ksm_scan.mm_slot != mm_slot) { in __ksm_exit()
1841 if (!mm_slot->rmap_list) { in __ksm_exit()
1842 hash_del(&mm_slot->link); in __ksm_exit()
1843 list_del(&mm_slot->mm_list); in __ksm_exit()
1846 list_move(&mm_slot->mm_list, in __ksm_exit()
1847 &ksm_scan.mm_slot->mm_list); in __ksm_exit()
1853 free_mm_slot(mm_slot); in __ksm_exit()
1856 } else if (mm_slot) { in __ksm_exit()