Lines Matching full:mm
40 * that the mm refcount is zero and the range is no longer accessible.
66 * Called either by mmu_notifier_unregister or when the mm is
69 * methods (the ones invoked outside the mm context) and it
74 * tsk->mm == mm exits.
81 * last thread of this mm quits, you've also to be sure that
89 struct mm_struct *mm);
101 struct mm_struct *mm,
111 struct mm_struct *mm,
122 struct mm_struct *mm,
199 struct mm_struct *mm,
206 * notifier for use with the mm.
213 struct mmu_notifier *(*alloc_notifier)(struct mm_struct *mm);
231 struct mm_struct *mm; member
251 struct mm_struct *mm; member
263 struct mm_struct *mm; member
271 static inline int mm_has_notifiers(struct mm_struct *mm) in mm_has_notifiers() argument
273 return unlikely(mm->notifier_subscriptions); in mm_has_notifiers()
277 struct mm_struct *mm);
279 mmu_notifier_get(const struct mmu_notifier_ops *ops, struct mm_struct *mm) in mmu_notifier_get() argument
283 mmap_write_lock(mm); in mmu_notifier_get()
284 ret = mmu_notifier_get_locked(ops, mm); in mmu_notifier_get()
285 mmap_write_unlock(mm); in mmu_notifier_get()
292 struct mm_struct *mm);
294 struct mm_struct *mm);
296 struct mm_struct *mm);
301 struct mm_struct *mm, unsigned long start,
305 struct mmu_interval_notifier *interval_sub, struct mm_struct *mm,
376 extern void __mmu_notifier_subscriptions_destroy(struct mm_struct *mm);
377 extern void __mmu_notifier_release(struct mm_struct *mm);
378 extern int __mmu_notifier_clear_flush_young(struct mm_struct *mm,
381 extern int __mmu_notifier_clear_young(struct mm_struct *mm,
384 extern int __mmu_notifier_test_young(struct mm_struct *mm,
388 extern void __mmu_notifier_arch_invalidate_secondary_tlbs(struct mm_struct *mm,
399 static inline void mmu_notifier_release(struct mm_struct *mm) in mmu_notifier_release() argument
401 if (mm_has_notifiers(mm)) in mmu_notifier_release()
402 __mmu_notifier_release(mm); in mmu_notifier_release()
405 static inline int mmu_notifier_clear_flush_young(struct mm_struct *mm, in mmu_notifier_clear_flush_young() argument
409 if (mm_has_notifiers(mm)) in mmu_notifier_clear_flush_young()
410 return __mmu_notifier_clear_flush_young(mm, start, end); in mmu_notifier_clear_flush_young()
414 static inline int mmu_notifier_clear_young(struct mm_struct *mm, in mmu_notifier_clear_young() argument
418 if (mm_has_notifiers(mm)) in mmu_notifier_clear_young()
419 return __mmu_notifier_clear_young(mm, start, end); in mmu_notifier_clear_young()
423 static inline int mmu_notifier_test_young(struct mm_struct *mm, in mmu_notifier_test_young() argument
426 if (mm_has_notifiers(mm)) in mmu_notifier_test_young()
427 return __mmu_notifier_test_young(mm, address); in mmu_notifier_test_young()
437 if (mm_has_notifiers(range->mm)) { in mmu_notifier_invalidate_range_start()
457 if (mm_has_notifiers(range->mm)) { in mmu_notifier_invalidate_range_start_nonblock()
471 if (mm_has_notifiers(range->mm)) in mmu_notifier_invalidate_range_end()
475 static inline void mmu_notifier_arch_invalidate_secondary_tlbs(struct mm_struct *mm, in mmu_notifier_arch_invalidate_secondary_tlbs() argument
478 if (mm_has_notifiers(mm)) in mmu_notifier_arch_invalidate_secondary_tlbs()
479 __mmu_notifier_arch_invalidate_secondary_tlbs(mm, start, end); in mmu_notifier_arch_invalidate_secondary_tlbs()
482 static inline void mmu_notifier_subscriptions_init(struct mm_struct *mm) in mmu_notifier_subscriptions_init() argument
484 mm->notifier_subscriptions = NULL; in mmu_notifier_subscriptions_init()
487 static inline void mmu_notifier_subscriptions_destroy(struct mm_struct *mm) in mmu_notifier_subscriptions_destroy() argument
489 if (mm_has_notifiers(mm)) in mmu_notifier_subscriptions_destroy()
490 __mmu_notifier_subscriptions_destroy(mm); in mmu_notifier_subscriptions_destroy()
497 struct mm_struct *mm, in mmu_notifier_range_init() argument
502 range->mm = mm; in mmu_notifier_range_init()
511 struct mm_struct *mm, unsigned long start, in mmu_notifier_range_init_owner() argument
514 mmu_notifier_range_init(range, event, flags, mm, start, end); in mmu_notifier_range_init_owner()
581 #define mmu_notifier_range_init(range,event,flags,mm,start,end) \ argument
583 #define mmu_notifier_range_init_owner(range, event, flags, mm, start, \ argument
593 static inline int mm_has_notifiers(struct mm_struct *mm) in mm_has_notifiers() argument
598 static inline void mmu_notifier_release(struct mm_struct *mm) in mmu_notifier_release() argument
602 static inline int mmu_notifier_clear_flush_young(struct mm_struct *mm, in mmu_notifier_clear_flush_young() argument
609 static inline int mmu_notifier_test_young(struct mm_struct *mm, in mmu_notifier_test_young() argument
631 static inline void mmu_notifier_arch_invalidate_secondary_tlbs(struct mm_struct *mm, in mmu_notifier_arch_invalidate_secondary_tlbs() argument
636 static inline void mmu_notifier_subscriptions_init(struct mm_struct *mm) in mmu_notifier_subscriptions_init() argument
640 static inline void mmu_notifier_subscriptions_destroy(struct mm_struct *mm) in mmu_notifier_subscriptions_destroy() argument