aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sched.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r--include/linux/sched.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 451e241f32c5..7cfa5546c840 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2904,6 +2904,28 @@ static inline unsigned long sigsp(unsigned long sp, struct ksignal *ksig)
2904 */ 2904 */
2905extern struct mm_struct * mm_alloc(void); 2905extern struct mm_struct * mm_alloc(void);
2906 2906
2907/**
2908 * mmgrab() - Pin a &struct mm_struct.
2909 * @mm: The &struct mm_struct to pin.
2910 *
2911 * Make sure that @mm will not get freed even after the owning task
2912 * exits. This doesn't guarantee that the associated address space
2913 * will still exist later on and mmget_not_zero() has to be used before
2914 * accessing it.
2915 *
2916 * This is a preferred way to to pin @mm for a longer/unbounded amount
2917 * of time.
2918 *
2919 * Use mmdrop() to release the reference acquired by mmgrab().
2920 *
2921 * See also <Documentation/vm/active_mm.txt> for an in-depth explanation
2922 * of &mm_struct.mm_count vs &mm_struct.mm_users.
2923 */
2924static inline void mmgrab(struct mm_struct *mm)
2925{
2926 atomic_inc(&mm->mm_count);
2927}
2928
2907/* mmdrop drops the mm and the page tables */ 2929/* mmdrop drops the mm and the page tables */
2908extern void __mmdrop(struct mm_struct *); 2930extern void __mmdrop(struct mm_struct *);
2909static inline void mmdrop(struct mm_struct *mm) 2931static inline void mmdrop(struct mm_struct *mm)