Lines Matching defs:mm_slot

46 #include "mm_slot.h"
123 * @slot: hash lookup from mm to mm_slot
124 * @rmap_list: head for this mm_slot's singly-linked list of rmap_items
127 struct mm_slot slot;
133 * @mm_slot: the current mm_slot we are scanning
141 struct ksm_mm_slot *mm_slot;
189 * @rmap_list: next rmap_item in mm_slot's singly-linked rmap_list
244 .mm_slot = &ksm_mm_head,
1171 struct ksm_mm_slot *mm_slot;
1172 struct mm_slot *slot;
1179 struct mm_slot, mm_node);
1180 ksm_scan.mm_slot = mm_slot_entry(slot, struct ksm_mm_slot, slot);
1183 for (mm_slot = ksm_scan.mm_slot; mm_slot != &ksm_mm_head;
1184 mm_slot = ksm_scan.mm_slot) {
1185 VMA_ITERATOR(vmi, mm_slot->slot.mm, 0);
1187 mm = mm_slot->slot.mm;
1207 remove_trailing_rmap_items(&mm_slot->rmap_list);
1211 slot = list_entry(mm_slot->slot.mm_node.next,
1212 struct mm_slot, mm_node);
1213 ksm_scan.mm_slot = mm_slot_entry(slot, struct ksm_mm_slot, slot);
1215 hash_del(&mm_slot->slot.hash);
1216 list_del(&mm_slot->slot.mm_node);
1219 mm_slot_free(mm_slot_cache, mm_slot);
1235 ksm_scan.mm_slot = &ksm_mm_head;
2364 static struct ksm_rmap_item *get_next_rmap_item(struct ksm_mm_slot *mm_slot,
2384 rmap_item->mm = mm_slot->slot.mm;
2464 struct ksm_mm_slot *mm_slot;
2465 struct mm_slot *slot;
2474 mm_slot = ksm_scan.mm_slot;
2475 if (mm_slot == &ksm_mm_head) {
2515 slot = list_entry(mm_slot->slot.mm_node.next,
2516 struct mm_slot, mm_node);
2517 mm_slot = mm_slot_entry(slot, struct ksm_mm_slot, slot);
2518 ksm_scan.mm_slot = mm_slot;
2524 if (mm_slot == &ksm_mm_head)
2528 ksm_scan.rmap_list = &mm_slot->rmap_list;
2531 slot = &mm_slot->slot;
2568 rmap_item = get_next_rmap_item(mm_slot,
2596 ksm_scan.rmap_list = &mm_slot->rmap_list;
2605 slot = list_entry(mm_slot->slot.mm_node.next,
2606 struct mm_slot, mm_node);
2607 ksm_scan.mm_slot = mm_slot_entry(slot, struct ksm_mm_slot, slot);
2618 hash_del(&mm_slot->slot.hash);
2619 list_del(&mm_slot->slot.mm_node);
2622 mm_slot_free(mm_slot_cache, mm_slot);
2633 * because the "mm_slot" is still hashed and
2634 * ksm_scan.mm_slot doesn't point to it anymore.
2640 mm_slot = ksm_scan.mm_slot;
2641 if (mm_slot != &ksm_mm_head)
2884 struct ksm_mm_slot *mm_slot;
2885 struct mm_slot *slot;
2888 mm_slot = mm_slot_alloc(mm_slot_cache);
2889 if (!mm_slot)
2892 slot = &mm_slot->slot;
2912 list_add_tail(&slot->mm_node, &ksm_scan.mm_slot->slot.mm_node);
2927 struct ksm_mm_slot *mm_slot;
2928 struct mm_slot *slot;
2933 * case when ksmd was never running), free mm_slot immediately.
2936 * are freed, and leave the mm_slot on the list for ksmd to free.
2942 mm_slot = mm_slot_entry(slot, struct ksm_mm_slot, slot);
2943 if (mm_slot && ksm_scan.mm_slot != mm_slot) {
2944 if (!mm_slot->rmap_list) {
2950 &ksm_scan.mm_slot->slot.mm_node);
2956 mm_slot_free(mm_slot_cache, mm_slot);
2960 } else if (mm_slot) {