def idr_for_each(idr: Object) -> Iterator[Tuple[int, Object]]: """ Iterate over all of the entries in an IDR. :param idr: ``struct idr *`` :return: Iterator of (index, ``void *``) tuples. """ try: base = idr.idr_base.value_() except AttributeError: base = 0 for index, entry in radix_tree_for_each(idr.idr_rt.address_of_()): yield index + base, entry
def idr_for_each(idr): """ .. c:function:: idr_for_each(struct idr *idr) Iterate over all of the entries in an IDR. :return: Iterator of (index, ``void *``) tuples. :rtype: Iterator[tuple[int, Object]] """ try: base = idr.idr_base.value_() except AttributeError: base = 0 for index, entry in radix_tree_for_each(idr.idr_rt.address_of_()): yield index + base, entry
re_str = None if args.cgroup: for r in args.cgroup: if re_str is None: re_str = r else: re_str += '|' + r filter_re = re.compile(re_str) if re_str else None # Locate the roots q_id = None root_iocg = None ioc = None for i, ptr in radix_tree_for_each(blkcg_root.blkg_tree.address_of_()): blkg = drgn.Object(prog, 'struct blkcg_gq', address=ptr) try: if devname == blkg.q.kobj.parent.name.string_().decode('utf-8'): q_id = blkg.q.id.value_() if blkg.pd[plid]: root_iocg = container_of(blkg.pd[plid], 'struct ioc_gq', 'pd') ioc = root_iocg.ioc break except: pass if ioc is None: err(f'Could not find ioc for {devname}') if interval == 0:
re_str = None if args.cgroup: for r in args.cgroup: if re_str is None: re_str = r else: re_str += '|' + r filter_re = re.compile(re_str) if re_str else None # Locate the roots q_id = None root_iocg = None ioc = None for i, ptr in radix_tree_for_each(blkcg_root.blkg_tree): blkg = drgn.Object(prog, 'struct blkcg_gq', address=ptr) try: if devname == blkg.q.kobj.parent.name.string_().decode('utf-8'): q_id = blkg.q.id.value_() if blkg.pd[plid]: root_iocg = container_of(blkg.pd[plid], 'struct ioc_gq', 'pd') ioc = root_iocg.ioc break except: pass if ioc is None: err(f'Could not find ioc for {devname}'); # Keep printing