def __init__(self, elf, section): self.section = section self.elf = elf self.wordsize = elf.wordsize self.format_str = "%s%s" % \ (elf.endianess, ["I", "Q"][elf.wordsize==64]) self.tcb = arch_import(self.elf_machine_lookup, "nano_tcb", elf.machine) self.map = arch_import(self.elf_machine_lookup, "nano_mappings", elf.machine) self.mappings = self.map.Mappings() self.kpagetable_phys = get_symbol_value(self.elf, "kpagetable_phys") self.pgtable_size = 0 self.num_threads = get_symbol_value(self.elf, "max_tcbs") self.tcb_base_addr = get_symbol_value(self.elf, "tcbs") self.tcb_size = 0 self.spare_threads = 0 self.thread_table = [] self.prio_list = [[] for _ in range(self.MAX_PRIORITY+1)] self.priority_table_size = 0 self.futex_hash_slots = get_symbol_value(self.elf, "futex_hash_slots") self.futex_hash = get_symbol_value(self.elf, "futex_hash") self.futex_pending_tags = get_symbol_value(self.elf, "futex_pending_tags")
def __init__(self, elf, namespace, machine): self.kernel_data = ByteArray([]) self.kobjects_ms = None self.namespace = namespace self.wordsize = elf.wordsize self.format_str = "%s%s" % \ (elf.endianess, ["I", "Q"][elf.wordsize/8==64]) self.machine_init(machine) self.tcb = arch_import(self.arch_lookup, "nano_tcb", self.cpu) self.map = arch_import(self.arch_lookup, "nano_mappings", self.cpu) self.patches = [] self.segment_drops = ["elfweaver"] self.devices = []