1 #ifndef _LINUX_MMAP_LOCK_H 2 #define _LINUX_MMAP_LOCK_H 3 mmap_init_lock(struct mm_struct * mm)4static inline void mmap_init_lock(struct mm_struct *mm) 5 { 6 init_rwsem(&mm->mmap_sem); 7 } 8 mmap_write_lock(struct mm_struct * mm)9static inline void mmap_write_lock(struct mm_struct *mm) 10 { 11 down_write(&mm->mmap_sem); 12 } 13 mmap_write_lock_killable(struct mm_struct * mm)14static inline int mmap_write_lock_killable(struct mm_struct *mm) 15 { 16 return down_write_killable(&mm->mmap_sem); 17 } 18 mmap_write_trylock(struct mm_struct * mm)19static inline bool mmap_write_trylock(struct mm_struct *mm) 20 { 21 return down_write_trylock(&mm->mmap_sem) != 0; 22 } 23 mmap_write_unlock(struct mm_struct * mm)24static inline void mmap_write_unlock(struct mm_struct *mm) 25 { 26 up_write(&mm->mmap_sem); 27 } 28 mmap_write_downgrade(struct mm_struct * mm)29static inline void mmap_write_downgrade(struct mm_struct *mm) 30 { 31 downgrade_write(&mm->mmap_sem); 32 } 33 mmap_read_lock(struct mm_struct * mm)34static inline void mmap_read_lock(struct mm_struct *mm) 35 { 36 down_read(&mm->mmap_sem); 37 } 38 mmap_read_lock_killable(struct mm_struct * mm)39static inline int mmap_read_lock_killable(struct mm_struct *mm) 40 { 41 return down_read_killable(&mm->mmap_sem); 42 } 43 mmap_read_trylock(struct mm_struct * mm)44static inline bool mmap_read_trylock(struct mm_struct *mm) 45 { 46 return down_read_trylock(&mm->mmap_sem) != 0; 47 } 48 mmap_read_unlock(struct mm_struct * mm)49static inline void mmap_read_unlock(struct mm_struct *mm) 50 { 51 up_read(&mm->mmap_sem); 52 } 53 54 #endif /* _LINUX_MMAP_LOCK_H */ 55