Skip to content

Anonymous VMA Chain

struct anon_vma_chain (4 fields) source
§ struct vma_range *vma_range
§ struct anon_vma *anon_vma
§ struct list_node same_vma_range

on vma_range->anon_vma_chain

§ struct rbit_node itnode

in anon_vma->tree

struct anon_vma_chain * avc_alloc(void)
source
void avc_free(struct anon_vma_chain *avc)
source
void avc_link(
    struct vma_range *vma_range,
    struct anon_vma *av,
    struct anon_vma_chain *avc
)
source

Link a vma_range to an anon_vma: push onto vma_range’s list AND insert into av’s tree

void avc_unlink(struct anon_vma_chain *avc)
source
void avc_rekey(struct anon_vma_chain *avc)
source

re-key AVC after vma_range page range changed, reinsert tree node afterwards

pgoff_t avc_first(const struct anon_vma_chain *a)
source

what the tree is keyed on

pgoff_t avc_last(const struct anon_vma_chain *a)
source