Skip to content

kernel ¤

Modules:

Classes:

Functions:

Attributes:

P module-attribute ¤

P = ParamSpec('P')

D module-attribute ¤

D = TypeVar('D')

T module-attribute ¤

T = TypeVar('T')

page_typeinfo_recovery_failure module-attribute ¤

page_typeinfo_recovery_failure: TypeNotRecovered | None = None

ArchOps ¤

Bases: ABC

Methods:

Attributes:

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_offset property ¤

page_offset: int

phys_offset property ¤

phys_offset: int

page_shift property ¤

page_shift: int

vmemmap property ¤

vmemmap: int

kbase property ¤

kbase: int | None

page_size property ¤

page_size: int

per_cpu abstractmethod ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value | None

virt_to_phys abstractmethod ¤

virt_to_phys(virt: int) -> int

phys_to_virt abstractmethod ¤

phys_to_virt(phys: int) -> int

phys_to_pfn abstractmethod ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys abstractmethod ¤

pfn_to_phys(pfn: int) -> int

pfn_to_page abstractmethod ¤

pfn_to_page(phys: int) -> int

page_to_pfn abstractmethod ¤

page_to_pfn(page: int) -> int

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

x86Ops ¤

Bases: ArchOps

Methods:

Attributes:

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_offset property ¤

page_offset: int

phys_offset property ¤

phys_offset: int

page_shift property ¤

page_shift: int

vmemmap property ¤

vmemmap: int

kbase property ¤

kbase: int | None

page_size property ¤

page_size: int

phys_to_virt ¤

phys_to_virt(phys: int) -> int

phys_to_pfn ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys ¤

pfn_to_phys(pfn: int) -> int

paging_enabled staticmethod ¤

paging_enabled() -> bool

per_cpu abstractmethod ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value | None

virt_to_phys abstractmethod ¤

virt_to_phys(virt: int) -> int

pfn_to_page abstractmethod ¤

pfn_to_page(phys: int) -> int

page_to_pfn abstractmethod ¤

page_to_pfn(page: int) -> int

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

i386Ops ¤

Bases: x86Ops

Methods:

Attributes:

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_offset property ¤

page_offset: int

phys_offset property ¤

phys_offset: int

page_shift property ¤

page_shift: int

vmemmap property ¤

vmemmap: int

kbase property ¤

kbase: int | None

page_size property ¤

page_size: int

virt_to_phys ¤

virt_to_phys(virt: int) -> int

per_cpu ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value

pfn_to_page ¤

pfn_to_page(pfn: int) -> int

page_to_pfn ¤

page_to_pfn(page: int) -> int

phys_to_virt ¤

phys_to_virt(phys: int) -> int

phys_to_pfn ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys ¤

pfn_to_phys(pfn: int) -> int

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

paging_enabled staticmethod ¤

paging_enabled() -> bool

x86_64Ops ¤

x86_64Ops()

Bases: x86Ops

Methods:

Attributes:

phys_base instance-attribute ¤

phys_base = 16777216

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_offset property ¤

page_offset: int

phys_offset property ¤

phys_offset: int

page_shift property ¤

page_shift: int

vmemmap property ¤

vmemmap: int

kbase property ¤

kbase: int | None

page_size property ¤

page_size: int

per_cpu ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value

virt_to_phys ¤

virt_to_phys(virt: int) -> int

pfn_to_page ¤

pfn_to_page(pfn: int) -> int

page_to_pfn ¤

page_to_pfn(page: int) -> int

phys_to_virt ¤

phys_to_virt(phys: int) -> int

phys_to_pfn ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys ¤

pfn_to_phys(pfn: int) -> int

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

paging_enabled staticmethod ¤

paging_enabled() -> bool

Aarch64Ops ¤

Bases: ArchOps

Methods:

Attributes:

STRUCT_PAGE_SIZE property ¤

STRUCT_PAGE_SIZE

STRUCT_PAGE_SHIFT property ¤

STRUCT_PAGE_SHIFT

page_offset property ¤

page_offset: int

phys_offset property ¤

phys_offset: int

page_shift property ¤

page_shift: int

vmemmap property ¤

vmemmap: int

kbase property ¤

kbase: int | None

page_size property ¤

page_size: int

per_cpu ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value

virt_to_phys ¤

virt_to_phys(virt: int) -> int

phys_to_virt ¤

phys_to_virt(phys: int) -> int

phys_to_pfn ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys ¤

pfn_to_phys(pfn: int) -> int

pfn_to_page ¤

pfn_to_page(pfn: int) -> int

page_to_pfn ¤

page_to_pfn(page: int) -> int

paging_enabled staticmethod ¤

paging_enabled() -> bool

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

BIT ¤

BIT(shift: int)

has_debug_symbols ¤

has_debug_symbols(*required: str, checkall: bool = True) -> bool

has_debug_info ¤

has_debug_info() -> bool

requires_debug_symbols ¤

requires_debug_symbols(
    *required: str, checkall=False, default: D = None
) -> Callable[[Callable[P, T]], Callable[P, T | D]]

requires_debug_info ¤

requires_debug_info(
    default: D = None,
) -> Callable[[Callable[P, T]], Callable[P, T | D]]

typeinfo_recovery ¤

typeinfo_recovery(
    name: str, requires_kversion: bool = False, requires_kbase: bool = False
) -> Callable[[Callable[P, str]], Callable[P, None]]

nproc ¤

nproc() -> int

Returns the number of processing units available, similar to nproc(1)

first_kernel_ro_page ¤

first_kernel_ro_page() -> Page | None

Returns the first kernel mapping which contains the linux_banner

kconfig ¤

kconfig() -> Kconfig

kcmdline ¤

kcmdline() -> str

kversion ¤

kversion() -> str | None

krelease ¤

krelease() -> tuple[int, ...] | None

get_idt_entries ¤

get_idt_entries() -> list[IDTEntry]

Retrieves the IDT entries from memory.

current_cpu ¤

current_cpu() -> int

get_double_linked_list ¤

get_double_linked_list(
    head: int, minlen: int = 1, maxlen: int = 4096
) -> list[int] | None

in_kmem_cache ¤

in_kmem_cache(val: int, name: str, strict: bool = True) -> bool

arch_paginginfo ¤

arch_paginginfo() -> ArchPagingInfo | None

arch_ops ¤

arch_ops() -> ArchOps | None

arch_symbols ¤

arch_symbols() -> ArchSymbols | None

page_size ¤

page_size() -> int

per_cpu ¤

per_cpu(addr: int | Value, cpu: int | None = None) -> Value

virt_to_phys ¤

virt_to_phys(virt: int) -> int

phys_to_virt ¤

phys_to_virt(phys: int) -> int

phys_to_pfn ¤

phys_to_pfn(phys: int) -> int

pfn_to_phys ¤

pfn_to_phys(pfn: int) -> int

pfn_to_page ¤

pfn_to_page(pfn: int) -> int

page_to_pfn ¤

page_to_pfn(page: int) -> int

phys_to_page ¤

phys_to_page(phys: int) -> int

page_to_phys ¤

page_to_phys(page: int) -> int

virt_to_page ¤

virt_to_page(virt: int) -> int

page_to_virt ¤

page_to_virt(page: int) -> int

pfn_to_virt ¤

pfn_to_virt(pfn: int) -> int

virt_to_pfn ¤

virt_to_pfn(virt: int) -> int

kbase ¤

kbase() -> int | None

page_shift ¤

page_shift() -> int

pagewalk ¤

pagewalk(addr, entry: int | None = None, virt: bool = True) -> PagewalkResult

assumes entry is a valid physaddr (+ flags) the strategy is to walk any virtual pgd first

pagescan ¤

pagescan(entry=None) -> tuple[Page, ...]

bitflags ¤

bitflags(level: PageTableLevel) -> BitFlags

paging_enabled ¤

paging_enabled() -> bool

num_numa_nodes ¤

num_numa_nodes() -> int

Returns the number of NUMA nodes that are online on the system

node_data ¤

node_data() -> Value

slab_caches ¤

slab_caches() -> Value

per_cpu_offset ¤

per_cpu_offset() -> Value

modules ¤

modules() -> Value

db_list ¤

db_list() -> Value

prog_idr ¤

prog_idr() -> Value

map_idr ¤

map_idr() -> Value

current_task ¤

current_task(cpu: int | None = None) -> int