mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
mm/rmap: make anon_vma functions internal
The bulk of the anon_vma operations are only used by mm, so formalise this by putting the function prototypes and inlines in mm/internal.h. This allows us to make changes without having to worry about the rest of the kernel. Link: https://lkml.kernel.org/r/79ec933c3a9c8bf1f64dab253bbfdae8a01cb921.1768746221.git.lorenzo.stoakes@oracle.com Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Reviewed-by: Suren Baghdasaryan <surenb@google.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Barry Song <v-songbaohua@oppo.com> Cc: Chris Li <chriscli@google.com> Cc: David Hildenbrand <david@kernel.org> Cc: Harry Yoo <harry.yoo@oracle.com> Cc: Jann Horn <jannh@google.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Pedro Falcato <pfalcato@suse.de> Cc: Rik van Riel <riel@surriel.com> Cc: Shakeel Butt <shakeel.butt@linux.dev> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
53eb797ffc
commit
7549e3d20f
|
|
@ -104,68 +104,8 @@ enum ttu_flags {
|
|||
};
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
static inline void get_anon_vma(struct anon_vma *anon_vma)
|
||||
{
|
||||
atomic_inc(&anon_vma->refcount);
|
||||
}
|
||||
|
||||
void __put_anon_vma(struct anon_vma *anon_vma);
|
||||
|
||||
static inline void put_anon_vma(struct anon_vma *anon_vma)
|
||||
{
|
||||
if (atomic_dec_and_test(&anon_vma->refcount))
|
||||
__put_anon_vma(anon_vma);
|
||||
}
|
||||
|
||||
static inline void anon_vma_lock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
down_write(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline int anon_vma_trylock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
return down_write_trylock(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_unlock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
up_write(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_lock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
down_read(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline int anon_vma_trylock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
return down_read_trylock(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
up_read(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* anon_vma helper functions.
|
||||
*/
|
||||
void anon_vma_init(void); /* create anon_vma_cachep */
|
||||
int __anon_vma_prepare(struct vm_area_struct *);
|
||||
void unlink_anon_vmas(struct vm_area_struct *);
|
||||
int anon_vma_clone(struct vm_area_struct *, struct vm_area_struct *);
|
||||
int anon_vma_fork(struct vm_area_struct *, struct vm_area_struct *);
|
||||
|
||||
static inline int anon_vma_prepare(struct vm_area_struct *vma)
|
||||
{
|
||||
if (likely(vma->anon_vma))
|
||||
return 0;
|
||||
|
||||
return __anon_vma_prepare(vma);
|
||||
}
|
||||
|
||||
struct anon_vma *folio_get_anon_vma(const struct folio *folio);
|
||||
|
||||
#ifdef CONFIG_MM_ID
|
||||
static __always_inline void folio_lock_large_mapcount(struct folio *folio)
|
||||
|
|
|
|||
|
|
@ -199,6 +199,64 @@ static inline void vma_close(struct vm_area_struct *vma)
|
|||
|
||||
#ifdef CONFIG_MMU
|
||||
|
||||
static inline void get_anon_vma(struct anon_vma *anon_vma)
|
||||
{
|
||||
atomic_inc(&anon_vma->refcount);
|
||||
}
|
||||
|
||||
void __put_anon_vma(struct anon_vma *anon_vma);
|
||||
|
||||
static inline void put_anon_vma(struct anon_vma *anon_vma)
|
||||
{
|
||||
if (atomic_dec_and_test(&anon_vma->refcount))
|
||||
__put_anon_vma(anon_vma);
|
||||
}
|
||||
|
||||
static inline void anon_vma_lock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
down_write(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline int anon_vma_trylock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
return down_write_trylock(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_unlock_write(struct anon_vma *anon_vma)
|
||||
{
|
||||
up_write(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_lock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
down_read(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline int anon_vma_trylock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
return down_read_trylock(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
|
||||
{
|
||||
up_read(&anon_vma->root->rwsem);
|
||||
}
|
||||
|
||||
struct anon_vma *folio_get_anon_vma(const struct folio *folio);
|
||||
|
||||
int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src);
|
||||
int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma);
|
||||
int __anon_vma_prepare(struct vm_area_struct *vma);
|
||||
void unlink_anon_vmas(struct vm_area_struct *vma);
|
||||
|
||||
static inline int anon_vma_prepare(struct vm_area_struct *vma)
|
||||
{
|
||||
if (likely(vma->anon_vma))
|
||||
return 0;
|
||||
|
||||
return __anon_vma_prepare(vma);
|
||||
}
|
||||
|
||||
/* Flags for folio_pte_batch(). */
|
||||
typedef int __bitwise fpb_t;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user