Skip to content

paging ¤

Classes:

Functions:

Attributes:

INVALID_ADDR module-attribute ¤

INVALID_ADDR = 1 << 64

PageTableLevel dataclass ¤

PageTableLevel(name: str, entry: int, virt: int, idx: int)

Attributes:

name instance-attribute ¤

name: str

entry instance-attribute ¤

entry: int

virt instance-attribute ¤

virt: int

idx instance-attribute ¤

idx: int

ArchPagingInfo ¤

Methods:

Attributes:

USERLAND class-attribute instance-attribute ¤

USERLAND = 'userland'

KERNELLAND class-attribute instance-attribute ¤

KERNELLAND = 'kernel [.text]'

KERNELRO class-attribute instance-attribute ¤

KERNELRO = 'kernel [.rodata]'

KERNELBSS class-attribute instance-attribute ¤

KERNELBSS = 'kernel [.bss]'

KERNELDRIVER class-attribute instance-attribute ¤

KERNELDRIVER = 'kernel [.driver .bpf]'

ESPSTACK class-attribute instance-attribute ¤

ESPSTACK = 'espfix'

PHYSMAP class-attribute instance-attribute ¤

PHYSMAP = 'physmap'

VMALLOC class-attribute instance-attribute ¤

VMALLOC = 'vmalloc'

VMEMMAP class-attribute instance-attribute ¤

VMEMMAP = 'vmemmap'

physmap instance-attribute ¤

physmap: int

vmalloc instance-attribute ¤

vmalloc: int

vmemmap instance-attribute ¤

vmemmap: int

kbase instance-attribute ¤

kbase: int

addr_marker_sz instance-attribute ¤

addr_marker_sz: int

va_bits instance-attribute ¤

va_bits: int

pagetable_cache class-attribute instance-attribute ¤

pagetable_cache: dict[Value, dict[int, int]] = {}

pagetableptr_cache class-attribute instance-attribute ¤

pagetableptr_cache: dict[int, Value] = {}

pagetable_level_names instance-attribute ¤

pagetable_level_names: tuple[str, ...]

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_shift property ¤

page_shift: int

paging_level property ¤

paging_level: int

phys_offset property ¤

phys_offset

adjust ¤

adjust(name: str) -> str

markers ¤

markers() -> tuple[tuple[str, int], ...]

handle_kernel_pages ¤

handle_kernel_pages(pages)

kbase_helper ¤

kbase_helper(address)

pagewalk ¤

pagewalk(target, entry) -> tuple[PageTableLevel, ...]

pagewalk_helper ¤

pagewalk_helper(target, entry) -> tuple[PageTableLevel, ...]

pageentry_flags ¤

pageentry_flags(level) -> BitFlags

should_stop_pagewalk ¤

should_stop_pagewalk(is_last)

x86_64PagingInfo ¤

x86_64PagingInfo()

Bases: ArchPagingInfo

Methods:

Attributes:

va_bits instance-attribute ¤

va_bits = 48 if paging_level == 4 else 51

pagetable_level_names instance-attribute ¤

pagetable_level_names = (
    ("Page", "PT", "PMD", "PUD", "PGD")
    if paging_level == 4
    else ("Page", "PT", "PMD", "P4D", "PUD", "PGD")
)

physmap property ¤

physmap

kbase property ¤

kbase

page_shift property ¤

page_shift: int

vmalloc property ¤

vmalloc

vmemmap property ¤

vmemmap

paging_level property ¤

paging_level: int

USERLAND class-attribute instance-attribute ¤

USERLAND = 'userland'

KERNELLAND class-attribute instance-attribute ¤

KERNELLAND = 'kernel [.text]'

KERNELRO class-attribute instance-attribute ¤

KERNELRO = 'kernel [.rodata]'

KERNELBSS class-attribute instance-attribute ¤

KERNELBSS = 'kernel [.bss]'

KERNELDRIVER class-attribute instance-attribute ¤

KERNELDRIVER = 'kernel [.driver .bpf]'

ESPSTACK class-attribute instance-attribute ¤

ESPSTACK = 'espfix'

PHYSMAP class-attribute instance-attribute ¤

PHYSMAP = 'physmap'

VMALLOC class-attribute instance-attribute ¤

VMALLOC = 'vmalloc'

VMEMMAP class-attribute instance-attribute ¤

VMEMMAP = 'vmemmap'

addr_marker_sz instance-attribute ¤

addr_marker_sz: int

pagetable_cache class-attribute instance-attribute ¤

pagetable_cache: dict[Value, dict[int, int]] = {}

pagetableptr_cache class-attribute instance-attribute ¤

pagetableptr_cache: dict[int, Value] = {}

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

phys_offset property ¤

phys_offset

get_vmalloc_vmemmap_bases ¤

get_vmalloc_vmemmap_bases()

markers ¤

markers() -> tuple[tuple[str, int], ...]

adjust ¤

adjust(name)

handle_kernel_pages ¤

handle_kernel_pages(pages)

pagewalk ¤

pagewalk(target, entry) -> tuple[PageTableLevel, ...]

pageentry_flags ¤

pageentry_flags(is_last) -> BitFlags

should_stop_pagewalk ¤

should_stop_pagewalk(entry)

kbase_helper ¤

kbase_helper(address)

pagewalk_helper ¤

pagewalk_helper(target, entry) -> tuple[PageTableLevel, ...]

Aarch64PagingInfo ¤

Aarch64PagingInfo()

Bases: ArchPagingInfo

Methods:

Attributes:

tcr_el1 instance-attribute ¤

va_bits instance-attribute ¤

va_bits = 64 - tcr_el1['T1SZ']

PAGE_OFFSET instance-attribute ¤

PAGE_OFFSET = _PAGE_OFFSET(va_bits)

va_bits_min instance-attribute ¤

va_bits_min = 48 if va_bits > 48 else va_bits

vmalloc instance-attribute ¤

vmalloc = _PAGE_END(va_bits_min)

pagetable_level_names instance-attribute ¤

pagetable_level_names = ('Page', 'L3', 'L2', 'L1', 'L0')

physmap property ¤

physmap

kbase property ¤

kbase

kversion property ¤

kversion

module_start property ¤

module_start

vmemmap property ¤

vmemmap

pci property ¤

pci

fixmap property ¤

fixmap

ksize property ¤

ksize

page_shift_heuristic property ¤

page_shift_heuristic: int

page_shift property ¤

page_shift: int

page_shift_user property ¤

page_shift_user: int

paging_level property ¤

paging_level

phys_offset property ¤

phys_offset

USERLAND class-attribute instance-attribute ¤

USERLAND = 'userland'

KERNELLAND class-attribute instance-attribute ¤

KERNELLAND = 'kernel [.text]'

KERNELRO class-attribute instance-attribute ¤

KERNELRO = 'kernel [.rodata]'

KERNELBSS class-attribute instance-attribute ¤

KERNELBSS = 'kernel [.bss]'

KERNELDRIVER class-attribute instance-attribute ¤

KERNELDRIVER = 'kernel [.driver .bpf]'

ESPSTACK class-attribute instance-attribute ¤

ESPSTACK = 'espfix'

PHYSMAP class-attribute instance-attribute ¤

PHYSMAP = 'physmap'

VMALLOC class-attribute instance-attribute ¤

VMALLOC = 'vmalloc'

VMEMMAP class-attribute instance-attribute ¤

VMEMMAP = 'vmemmap'

addr_marker_sz instance-attribute ¤

addr_marker_sz: int

pagetable_cache class-attribute instance-attribute ¤

pagetable_cache: dict[Value, dict[int, int]] = {}

pagetableptr_cache class-attribute instance-attribute ¤

pagetableptr_cache: dict[int, Value] = {}

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

markers ¤

markers() -> tuple[tuple[str, int], ...]

adjust ¤

adjust(name)

handle_kernel_pages ¤

handle_kernel_pages(pages)

pagewalk ¤

pagewalk(target, entry) -> tuple[PageTableLevel, ...]

pageentry_flags ¤

pageentry_flags(is_last) -> BitFlags

should_stop_pagewalk ¤

should_stop_pagewalk(entry)

kbase_helper ¤

kbase_helper(address)

pagewalk_helper ¤

pagewalk_helper(target, entry) -> tuple[PageTableLevel, ...]

get_memory_map_raw ¤

get_memory_map_raw() -> tuple[Page, ...]

first_kernel_page_start ¤

first_kernel_page_start()