def mte_safe_root(node): if node.type != maple_enode_type.get_type().pointer(): raise gdb.GdbError("{} must be {} not {}"
.format(mte_safe_root.__name__, maple_enode_type.get_type().pointer(), node.type))
ulong_type = utils.get_ulong_type()
indirect_ptr = node.cast(ulong_type) & ~0x2
val = indirect_ptr.cast(maple_enode_type.get_type().pointer()) return val
def mte_node_type(entry):
ulong_type = utils.get_ulong_type()
val = None if entry.type == maple_enode_type.get_type().pointer():
val = entry.cast(ulong_type) elif entry.type == ulong_type:
val = entry else: raise gdb.GdbError("{} must be {} not {}"
.format(mte_node_type.__name__, maple_enode_type.get_type().pointer(), entry.type)) return (val >> 0x3) & 0xf
def ma_dead_node(node): if node.type != maple_node_type.get_type().pointer(): raise gdb.GdbError("{} must be {} not {}"
.format(ma_dead_node.__name__, maple_node_type.get_type().pointer(), node.type))
ulong_type = utils.get_ulong_type()
parent = node['parent']
indirect_ptr = node['parent'].cast(ulong_type) & ~constants.LX_MAPLE_NODE_MASK return indirect_ptr == node
def mte_to_node(enode):
ulong_type = utils.get_ulong_type() if enode.type == maple_enode_type.get_type().pointer():
indirect_ptr = enode.cast(ulong_type) elif enode.type == ulong_type:
indirect_ptr = enode else: raise gdb.GdbError("{} must be {} not {}"
.format(mte_to_node.__name__, maple_enode_type.get_type().pointer(), enode.type))
indirect_ptr = indirect_ptr & ~constants.LX_MAPLE_NODE_MASK return indirect_ptr.cast(maple_node_type.get_type().pointer())
def mte_dead_node(enode): if enode.type != maple_enode_type.get_type().pointer(): raise gdb.GdbError("{} must be {} not {}"
.format(mte_dead_node.__name__, maple_enode_type.get_type().pointer(), enode.type))
node = mte_to_node(enode) return ma_dead_node(node)
def mt_pivots(t): if t == maple_dense: return 0 elif t == maple_leaf_64 or t == maple_range_64: return constants.LX_MAPLE_RANGE64_SLOTS - 1 elif t == maple_arange_64: return constants.LX_MAPLE_ARANGE64_SLOTS - 1
def ma_pivots(node, t): if node.type != maple_node_type.get_type().pointer(): raise gdb.GdbError("{}: must be {} not {}"
.format(ma_pivots.__name__, maple_node_type.get_type().pointer(), node.type)) if t == maple_arange_64: return node['ma64']['pivot'] elif t == maple_leaf_64 or t == maple_range_64: return node['mr64']['pivot'] else: returnNone
def ma_slots(node, tp): if node.type != maple_node_type.get_type().pointer(): raise gdb.GdbError("{}: must be {} not {}"
.format(ma_slots.__name__, maple_node_type.get_type().pointer(), node.type)) if tp == maple_arange_64: return node['ma64']['slot'] elif tp == maple_range_64 or tp == maple_leaf_64: return node['mr64']['slot'] elif tp == maple_dense: return node['slot'] else: returnNone
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.