Skip to content

Anonymous Virtual Memory Area

include/mem/anon_vma.h View source View on GitHub
struct anon_vma {
    struct rbit      tree;
    struct anon_vma  *root;
    struct anon_vma  *parent;
    struct rwlock    lock;
    refcount_t       refcount;
};
struct anon_vma * anon_vma_alloc(void);
void anon_vma_free(struct anon_vma *av);
enum errno anon_vma_fork(struct vma_range *child, struct vma_range *parent);
void anon_vma_read_lock(struct anon_vma *av);
void anon_vma_unlock(struct anon_vma *av);
void anon_vma_write_lock(struct anon_vma *av);
enum errno anon_vma_clone(struct vma_range *dst, struct vma_range *src);
struct anon_vma_chain * anon_vma_itree_first(struct anon_vma *av, pgoff_t first, pgoff_t last);
struct anon_vma_chain * anon_vma_itree_next(struct anon_vma_chain *avc, pgoff_t first, pgoff_t last);
void vma_range_unlink_anon_vmas(struct vma_range *vma_range);
bool anon_vma_is_root(const struct anon_vma *av);
bool anon_vma_get(struct anon_vma *av);
void anon_vm_area_put(struct anon_vma *av);