Skip to content

Binder

addrc = C.green module-attribute

code_to_name = {getattr(gdb, name): namefor name in codenames} module-attribute

codenames = [x for x in dir(gdb) if 'TYPE_CODE_' in x] module-attribute

entry_field_names = {'waiting_threads': 'waiting_thread_node', 'todo': 'entry', 'refs': 'node_entry'} module-attribute

fieldnamec = C.blue module-attribute

fieldvaluec = C.yellow module-attribute

log = logging.getLogger(__name__) module-attribute

name_to_code = {v: kfor (k, v) in code_to_name.items()} module-attribute

node_types = {'waiting_threads': 'struct binder_thread', 'todo': 'struct binder_work', 'refs': 'struct binder_ref', 'threads': 'struct binder_thread', 'nodes': 'struct binder_node', 'refs_by_node': 'struct binder_ref'} module-attribute

parser = argparse.ArgumentParser(description='Show Android Binder information') module-attribute

rb_node_field_names = {'threads': 'rb_node', 'nodes': 'rb_node', 'refs_by_node': 'rb_node_node'} module-attribute

typenamec = C.red module-attribute

BinderVisitor

addr = pwndbg.gdblib.memory.get_typed_pointer_value(gdb.lookup_type('struct hlist_head'), procs_addr) instance-attribute

indent = IndentContextManager() instance-attribute

__init__(procs_addr)

format_list(field, value, typename)

format_node(node)

format_proc(proc, only_heading=False)

format_rb_tree(field, value)

format_ref(ref, only_heading=False)

format_spinlock(lock)

format_thread(thread, only_heading=False)

format_transaction(transaction, only_heading=False)

format_work(work)

print_object(obj)

visit()

IndentContextManager

indent = 0 instance-attribute

__enter__()

__exit__(exc_type, exc_value, exc_tb)

__init__()

binder()

for_each_hlist_entry(head, typename, field)

for_each_transaction(addr, field)