当前位置: 首页>>代码示例>>Python>>正文


Python Register.fl_index方法代码示例

本文整理汇总了Python中register.Register.fl_index方法的典型用法代码示例。如果您正苦于以下问题:Python Register.fl_index方法的具体用法?Python Register.fl_index怎么用?Python Register.fl_index使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在register.Register的用法示例。


在下文中一共展示了Register.fl_index方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_flat_mappings

# 需要导入模块: from register import Register [as 别名]
# 或者: from register.Register import fl_index [as 别名]
def get_flat_mappings(domain, mmu):
    """Walk some LPAE IOMMU page tables by iterating over all possible
    page table entries at each level. Returns a dictionary of the
    form: {(virt_start, virt_end): LeafMapping object, ...}

    """
    mappings = {}
    n = mmu.input_addr_split
    virt_r = Register(fl_index=(n + 26, 30),
                      sl_index=(29, 21),
                      tl_index=(20, 12),
                      page_index=(11, 0))
    for fl_index in range(0, NUM_FL_PTE):
        virt_r.zero()
        virt_r.fl_index = fl_index
        info1 = mmu.translate_first_level(virt_r)
        if info1 is None:
            continue
        if info1.leaf:
            virt = virt_r.value
            mappings[virt, virt + info1.page_size] = info1
            continue

        # this is a table. do the second-level lookup:
        for sl_index in range(0, NUM_SL_PTE):
            virt_r.sl_index = sl_index
            info2 = mmu.translate_second_level(virt_r, info1.next_table_addr)
            if info2 is None:
                continue
            if info2.leaf:
                virt = virt_r.value
                mappings[virt, virt + info2.page_size] = info2
                continue

            # this is a table. do the third-level lookup:
            for tl_index in range(0, NUM_TL_PTE):
                virt_r.tl_index = tl_index
                info3 = mmu.translate_third_level(virt_r, info2.next_table_addr)
                if info3 is None:
                    continue
                if not info3.leaf:
                    raise Exception('Non-leaf third-level PTE???')
                virt = virt_r.value
                mappings[virt, virt + info3.page_size] = info3

    return OrderedDict(sorted(mappings.items()))
开发者ID:NingbinWang,项目名称:androidTools,代码行数:48,代码来源:lpaeiommulib.py


注:本文中的register.Register.fl_index方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。